MongoDB Go Driver 1.1.0
The MongoDB Go driver team is pleased to release 1.1.0 of the official Go driver.
This release contains support for MongoDB server version 4.2.
Documentation can be found on GoDoc and the MongoDB documentation site. BSON library documentation is also available on GoDoc. Questions and inquiries can be asked on the mongo-go-driver Google Group. Bugs can be reported in the Go Driver Jira where a list of current issues can be found.
Core Driver Redesign
The lower-level driver implementation was redesigned. The improved lower-level driver contained improvements to increase maintainability and greatly increase performance.Connection Pool Monitoring
The Connection Monitoring and Pooling specification has been implemented. This changes the pool implementation to LIFO, which improves connection utilization. The addition ofevent.PoolMonitor
enables users to monitor various connection and connection pool related events.
Release Notes
Bug
- [GODRIVER-1018] - record codeName for WriteConcernErrors
- [GODRIVER-1073] - ChangeStream spec's Resumable Error definition is too broad
- [GODRIVER-1084] - Data race in topology tests
- [GODRIVER-1085] - Change stream test failures on Evergreen
- [GODRIVER-1100] - Closing batch cursor after find gets "ended session was used"
- [GODRIVER-1107] - SetHint causes InvalidBSON error
- [GODRIVER-1108] - Operation.addReadConcern encodes "empty" ReadConcern
- [GODRIVER-1114] - RunCommandCursor always fails and returns an error message referencing internal driver details
- [GODRIVER-1130] - Pinned Servers should be cleared properly
- [GODRIVER-1153] - nil pointer asMDoc
- [GODRIVER-1160] - driver.BatchCursor Next returns true when first batch is empty
- [GODRIVER-1187] - Find() uses a write selector instead of a read selector
- [GODRIVER-1215] - lastWriteDate is parsed from isMaster incorrectly
- [GODRIVER-1224] - Race detected in x/mongo/driver/topology
- [GODRIVER-1226] - localThresholdMS does not default to 15 ms
New Feature
- [GODRIVER-620] - Implement Unified URI Options
- [GODRIVER-621] - Implement Convenient API for Transactions
- [GODRIVER-622] - Implement Connection Monitoring and Pooling spec
- [GODRIVER-623] - Support mongos pinning for sharded transactions
- [GODRIVER-624] - Retryable Reads
- [GODRIVER-625] - Support polling SRV records for mongos discovery
- [GODRIVER-628] - Connections survive primary stepdown
- [GODRIVER-637] - Support sharded transactions recovery token
- [GODRIVER-680] - Support running commands as aggregation
- [GODRIVER-690] - Transaction test runner should use "local" read concern when asserting the final collection state
- [GODRIVER-723] - Missing ListCollectionNames
- [GODRIVER-736] - Add comparison methods to primitive.Timestamp
- [GODRIVER-745] - Resync change stream tests to test all new notification types
- [GODRIVER-765] - Support 'startAfter' option to the $changeStream stage
- [GODRIVER-808] - Add support for Split-Horizon Topology
- [GODRIVER-822] - Support Retryable Writes on by Default
- [GODRIVER-824] - Support postBatchResumeToken in change streams
- [GODRIVER-841] - Resync SDAM tests to only examine non-unknown server descriptions to determine incompatibility
- [GODRIVER-845] - Add support for majority read concern level to Aggregation $out
- [GODRIVER-913] - countDocuments should use group with _id: 1
- [GODRIVER-916] - Cursor method to decode all results into a slice
- [GODRIVER-919] - Add the ability to specify a pipeline to an update command
- [GODRIVER-927] - Create new driver package
- [GODRIVER-928] - Update topology.Topology type
- [GODRIVER-929] - Create topology.pool type
- [GODRIVER-930] - Implement base driver.Connection type
- [GODRIVER-931] - Implement topology.legacyConnection type
- [GODRIVER-932] - Update topology.Server type
- [GODRIVER-978] - Implement driver.Operation
- [GODRIVER-984] - Add support for legacy find, getMore, and killCursors to driver.Operation
- [GODRIVER-985] - Design & Implement drivergen
- [GODRIVER-992] - Add compression to driver.Operation
- [GODRIVER-993] - Add command monitoring to driver.Operation
- [GODRIVER-1081] - Allow applications to set maxTimeMS for commitTransaction
- [GODRIVER-1209] - Create LocalAddresser interface and make topology.Connection implement it
- [GODRIVER-1219] - Raise an actionable error message when retryWrites fails due to using an unsupported storage engine
Task
- [GODRIVER-589] - Bump wire protocol version for 4.2
- [GODRIVER-968] - Add tests for postBatchResumeToken support
- [GODRIVER-969] - Test writes in transactions do not send writeConcern when collection write concern is w=0
- [GODRIVER-970] - Amend change stream missing resume token tests for wire version 8+
- [GODRIVER-1009] - Implement batch cursor in driver lib
- [GODRIVER-1015] - Set OP_MSG flags in driver.Operation
- [GODRIVER-1026] - Skip ReadWireMessage for unacknowledged writes
- [GODRIVER-1035] - Clear pinned server on TransientTransactionError
- [GODRIVER-1043] - Generate AbortTransaction operation
- [GODRIVER-1044] - Generate CommitTransaction operation
- [GODRIVER-1045] - Generate CreateIndexes operation
- [GODRIVER-1046] - Generate Delete operation
- [GODRIVER-1047] - Generate Distinct operation
- [GODRIVER-1048] - Generate DropCollection operation
- [GODRIVER-1049] - Generate DropDatabase operation
- [GODRIVER-1050] - Generate DropIndexes operation
- [GODRIVER-1051] - Generate EndSessions operation
- [GODRIVER-1052] - Generate FindAndModify operation
- [GODRIVER-1053] - Generate ListDatabases operation
- [GODRIVER-1054] - Generate Update operation
- [GODRIVER-1055] - Generate Aggregate operation
- [GODRIVER-1056] - Generate ListIndexes operation
- [GODRIVER-1057] - Change RunCommand and RunCommandCursor to use operation.Command
- [GODRIVER-1070] - Change Collection.Find to use FindOperation
- [GODRIVER-1071] - Change Collection.InsertMany to use InsertOperation
- [GODRIVER-1127] - Finer-grained updates from aggregation via $merge
- [GODRIVER-1146] - Add mongodb+srv URIs to Atlas Connectivity tests
- [GODRIVER-1149] - Migrate CountDocuments to new aggregate
- [GODRIVER-1150] - Generate Count operation
- [GODRIVER-1162] - Create a Connection interface that allows connections to be forcibly expired
- [GODRIVER-1164] - Update change stream docs example for resume token access
- [GODRIVER-1192] - Make transactions tests run faster on replica sets
- [GODRIVER-1231] - update doesn't handle bson.Raw correctly
Improvement
- [GODRIVER-145] - Automate Atlas connectivity tests
- [GODRIVER-447] - Only send bypassDocumentValidation if it's true
- [GODRIVER-512] - Update ChangeStream tests for 4.1.1 "drop" notifications
- [GODRIVER-705] - Add an alias in bsoncore for an Array
- [GODRIVER-755] - Add background goroutine per server to close expired, idle connections
- [GODRIVER-810] - Remove topology.Topology.registry field
- [GODRIVER-864] - Upgrade testing to go 1.12
- [GODRIVER-906] - Support wildcardProjection index option
- [GODRIVER-955] - Move packages under x/mongo/driverlegacy under x/mongo/driver
- [GODRIVER-994] - Remove legacy network library code
- [GODRIVER-1042] - Don't add read preference for non-mongos server with OP_QUERY
- [GODRIVER-1060] - Do not send client metadata on regular operation.IsMaster.Execute invocations
- [GODRIVER-1065] - Generate ListCollections operation
- [GODRIVER-1075] - Call SingleResult.setRdrContents() in SingleResult.Err() to return correct error
- [GODRIVER-1080] - Discard ServerSessions involved in network errors
- [GODRIVER-1083] - Documentation for countDocuments MUST mention estimatedDocumentCount
- [GODRIVER-1094] - Refactor templates in drivergen
- [GODRIVER-1099] - Change RetryType to Type
- [GODRIVER-1103] - Migrate bulkWrite to core API
- [GODRIVER-1124] - Don't send $readPreference to standalone servers
- [GODRIVER-1155] - Change chunk size in GridFS tests
- [GODRIVER-1163] - Retrieve a batch cursor from a cursor
- [GODRIVER-1173] - Add connected status to connection to avoid race conditions