Release Notes - C# Driver - Version 2.0 - HTML format

Bug

  • [CSHARP-691] - UpdateBuilder.Set throws InvalidOperationException when Set twice with the same element.
  • [CSHARP-711] - BitmapSerializer needs to be removed as not all formats can be consistently round tripped
  • [CSHARP-910] - BsonInternalException thrown in BsonCreatorMap.CreateInstance
  • [CSHARP-945] - Consider throwing ArgumentOutOfRangeException when DateTime overload of ObjectId is out of range.
  • [CSHARP-1039] - The Equals methods of SslSettings does not compare the certificate collections correctly
  • [CSHARP-1094] - ReadPreference and MaxTime not honored for cursor.Count() and Size()
  • [CSHARP-1128] - Heartbeats should speed up to minHeartbeatFrequencyMS whenever any SelectServerAsync loop is waiting for a suitable server
  • [CSHARP-1133] - Deadlock in mongo db C# drivers when using legacy MongoServer and WebApi
  • [CSHARP-1137] - Consider hiding listener interfaces until Monitoring Spec is completed
  • [CSHARP-1140] - Using Core Cluster with GSSAPI gets the database incorrectly configured.
  • [CSHARP-1172] - Error using ReadPreferenceServerSelector when servers have no tags
  • [CSHARP-1174] - IBsonSerializer for a mapped member should flow through expression tree when result type is the same.
  • [CSHARP-1178] - MaxSize is ignored when creating a capped collection
  • [CSHARP-1189] - FilterDefinitionBuilder doesn't account for all the variants of Eq, Gte, In, etc... where arrays or scalars are allowed
  • [CSHARP-1190] - Expression Trees with an upcasted conversion lose original serializer
  • [CSHARP-1195] - Driver is not re-establishing connection to MongoDb
  • [CSHARP-1198] - mongodb-csharp-driver throwing NullReferenceException when using CountAsync
  • [CSHARP-1218] - Null Reference Exception using Unwind with a Projection
  • [CSHARP-1221] - GeoWithinBox doesn't contain enough parameters
  • [CSHARP-1223] - JsonWriter Closes Underlying TextWriter Upon Dispose
  • [CSHARP-1227] - Connection to replicaset, RequestHeartbeat error

Epic

New Feature

  • [CSHARP-138] - Add asynchronous APIs
  • [CSHARP-305] - Implement new Nuget Packaging
  • [CSHARP-531] - Support the $ positional operator when building a query for updating a collection
  • [CSHARP-539] - Support C# dynamic type
  • [CSHARP-716] - Add support for serializing type Tuple introduced in .NET Framework 4
  • [CSHARP-719] - Add a setting for Heartbeat Frequency
  • [CSHARP-722] - Provide a method to inspect the state of a cluster
  • [CSHARP-783] - Support ISet Serialization
  • [CSHARP-894] - Add windows performance counters for connection pool status
  • [CSHARP-918] - There is no easy way to set a default serialization option for a type (even if it is in an array, dictionary, or derived class)
  • [CSHARP-978] - Design and create new database implementation
  • [CSHARP-985] - Instrument hooks to enable tracing and performance capture of all network calls from the csharp driver
  • [CSHARP-1036] - Design and create new collection implementation
  • [CSHARP-1077] - Support deserialization of readonly collection interfaces (IReadOnlyCollection<T>, IReadOnlyLis<T>t)
  • [CSHARP-1131] - Support projections in IFluentFind using Expressions and extension methods
  • [CSHARP-1132] - Support Project and Group in IAggregateFluent with Expression Trees
  • [CSHARP-1161] - Add WithReadPreference and WithWriteConcern to IMongoDatabase and IMongoCollection
  • [CSHARP-1173] - Aggregation Framework needs to support $addToSet and $push inside a Group expression tree
  • [CSHARP-1175] - Aggregation needs to support set operators.
  • [CSHARP-1176] - Aggregation should support Equals method.
  • [CSHARP-1197] - New reference documentation site

Task

  • [CSHARP-389] - TestBitmap fails using Mono on Mac OS X
  • [CSHARP-501] - Remove Items Marked Obsolete
  • [CSHARP-875] - Reimplement legacy API on top of New Core
  • [CSHARP-1013] - Create new Core Library
  • [CSHARP-1037] - Port bulk write operations from 1.x to 2.x
  • [CSHARP-1070] - Use listCollections command for helper method
  • [CSHARP-1071] - Add listIndexes command
  • [CSHARP-1072] - Bump maxWireProtocolVersion for 2.8 features
  • [CSHARP-1074] - Reimplement legacy CRUD methods that use commands on top of operations in Core
  • [CSHARP-1075] - Reimplement legacy admin methods that use commands on top of operations in Core
  • [CSHARP-1081] - Modify CreateIndexOperation to use new createIndexesCommand when supported by server
  • [CSHARP-1084] - Avoid using HasFlag
  • [CSHARP-1088] - Padding has been removed from Validate Collection
  • [CSHARP-1089] - Test against non-mmapv1 storage engine
  • [CSHARP-1090] - Work around localhost exception issues in addUser helpers
  • [CSHARP-1100] - Remove Command and ServerInstance from CommandResult
  • [CSHARP-1102] - Remove RequestStart from the public API
  • [CSHARP-1103] - Remove all occurences of FileFormatException
  • [CSHARP-1104] - Implement Expression base helpers in the new API.
  • [CSHARP-1106] - Review driver exception hierarchy
  • [CSHARP-1108] - Add support for storage options to CreateIndex and CreateCollection
  • [CSHARP-1113] - Force slaveOk to true for direct connections
  • [CSHARP-1120] - Update Core Settings classes to use Record-Style With method
  • [CSHARP-1129] - Ensure there is no memory leak when a ReceiveMessageAsync task is cancelled
  • [CSHARP-1130] - Consider converting listeners with methods and parameters to use structs
  • [CSHARP-1136] - Implement latencyThreshold
  • [CSHARP-1141] - Rename MongoNotMasterException to MongoNotPrimaryException
  • [CSHARP-1146] - Modify ReadPreference and WriteConcern to use Optional<T> and With like the settings classes
  • [CSHARP-1159] - RunCommand should default to Primary ReadPreference
  • [CSHARP-1160] - Either enforce the distinction between Direct and Standalone connection modes or remove Standalone from the enum
  • [CSHARP-1167] - Fail to connect to single node replication set
  • [CSHARP-1182] - Implement Server Selection Spec Yaml Tests
  • [CSHARP-1192] - Wrap exceptions that occur during communication with a MongoCommunicationException
  • [CSHARP-1201] - Remove OperationTimeout from Settings

Improvement

  • [CSHARP-153] - Wrapping internal communication exceptions
  • [CSHARP-393] - MongoConnectionPool should throw some kind of MongoException (MongoConnectionException?) instead of TimeoutException
  • [CSHARP-470] - Add logging to the Driver to help determine connection issues
  • [CSHARP-473] - Unexpected InvalidOperationException in MongoServerInstance.AcquireConnection
  • [CSHARP-485] - Investigate Interface Usage in Bson library
  • [CSHARP-509] - Remove superfluous Create methods and change how remaining Create methods handle C# null
  • [CSHARP-543] - Move common types into base namespaces
  • [CSHARP-555] - BsonDocument object model methods should throw ArgumentNullException instead of ignoring C# null
  • [CSHARP-558] - Replace AsXyz and ToXyz in BsonValue with GetXyz in BsonDocument
  • [CSHARP-560] - Remove explicit conversions from BsonValue
  • [CSHARP-573] - Change MD5 Hash for Machine Key to Something FIPS Compliant
  • [CSHARP-616] - Remove strong naming
  • [CSHARP-625] - Make .NET Framework 4 the minimum requirement for the C# driver
  • [CSHARP-663] - Move life cycle managament of server proxy objects down to MongoServerProxyFactory
  • [CSHARP-664] - Deprecate MongoClient.GetServer() and Remove MongoServer.Create()
  • [CSHARP-730] - Better error messaging for when we ignore read preference
  • [CSHARP-863] - How should BsonValues be serialized for C# null?
  • [CSHARP-933] - Improve IBsonSerializer design
  • [CSHARP-934] - Reorganize Repository
  • [CSHARP-937] - connectTimeoutMS should apply to the socket
  • [CSHARP-938] - Write API Documentation and Review Visibility of Classes/Members
  • [CSHARP-939] - Revisit Dynamic DictionaryRepresentation
  • [CSHARP-944] - Investigate using a Trie to speed up UTF8 decoding of element names
  • [CSHARP-952] - Remove Support for Partially Trusted Callers
  • [CSHARP-968] - Use a Trie in all our handcoded serializers to speed up deserialization
  • [CSHARP-975] - Move Caching of Connection Pools out of MongoServer.
  • [CSHARP-977] - Remove Deprecated Members in MongoServer, MongoDatabase, MongoDatabaseSettings, MongoCollection, and MongoCollectionSettings
  • [CSHARP-979] - Remove MongoConnectionStringBuilder
  • [CSHARP-981] - Introduce INameDecoder interface and use it to move Trie based name decoding out of BsonBinaryReader
  • [CSHARP-1015] - Fix Build Warnings on Mono
  • [CSHARP-1023] - Allow count to work with query hints
  • [CSHARP-1029] - Introduce interfaces for IBsonReader/IBsonWriter
  • [CSHARP-1032] - Add Documentation for X.509 external authentication for the C# driver
  • [CSHARP-1041] - Move Driver Exceptions into Core library
  • [CSHARP-1043] - Use Core's ReadPreference in Legacy API
  • [CSHARP-1044] - Use Core's WriteConcern in Legacy API
  • [CSHARP-1051] - Ensure ConfigureAwait is used internally on awaited async calls
  • [CSHARP-1055] - Replace CheckElementNames and CheckUpdateDocument with a more flexible ElementNameValidator
  • [CSHARP-1063] - Remove _bsonType field from BsonValue
  • [CSHARP-1065] - BsonDocument should postpone creating internal dictionary until document grows large enough
  • [CSHARP-1066] - Change BsonElement from a class to a struct
  • [CSHARP-1078] - Integrate Server Discovery and Monitoring Tests
  • [CSHARP-1082] - Don't allow TagSets to be used with a ReadPreferenceMode of Primary
  • [CSHARP-1092] - Optimize output of BSON arrays by caching index names
  • [CSHARP-1093] - Handle "not master" errors in compliance with SDAM spec.
  • [CSHARP-1096] - Depend on the fewest number of DLLs possible
  • [CSHARP-1097] - Add ConnectionId to MongoException (or some suitable subclass of it)
  • [CSHARP-1109] - Remove project reference from MongoDB.Driver.Tests to MongoDB.Driver.Core.Tests
  • [CSHARP-1111] - Reduce the number of serialization contexts that must be created
  • [CSHARP-1112] - Simplify IByteBuffer interface
  • [CSHARP-1115] - Support alternate buffer pool strategies
  • [CSHARP-1116] - Support alternate strategies for input and output buffers
  • [CSHARP-1117] - Add a few methods to IBsonStream and make it a fully functional stream
  • [CSHARP-1123] - Remove the ConnectionWrapper, ConnectionHandle and ReferenceCountedConnection classes
  • [CSHARP-1124] - Consider removing the SharedConnectionPool class
  • [CSHARP-1138] - Add IndexOfName method to BsonDocument
  • [CSHARP-1142] - Expose Stream Factory configuration in the High-Level API
  • [CSHARP-1145] - Support cursor in listCollections and listIndexes commands
  • [CSHARP-1147] - Add Error Categories to WriteError
  • [CSHARP-1150] - Replace instances of new UTF8Encoding(false, true) with static singletons
  • [CSHARP-1151] - C# doesn't have a "keepAlive" option, which exists in Java driver
  • [CSHARP-1168] - problems diagnosing connection issues from C# driver
  • [CSHARP-1187] - Ability to set maxTimeMS via Linq
  • [CSHARP-1196] - Change minHeartbeatFrequencyMS from 10 to 500
  • [CSHARP-1224] - All our Binary and JSON readers and writers should be able to operate on multiple documents

Sub-task

Edit/Copy Release Notes

The text area below allows the project release notes to be edited and copied to another document.