Release r2013.04.05 of the mgo MongoDB driver for Go is out
with several fixes and improvements.
Details about the driver may be found in its web page:
The following changes were made in this release:
- Fixed test case to adapt to minor differences in MongoDB 2.4. All
of the test suite works with 2.4, and continues to work with
- New Iter.Close method. Close kills the server cursor used by the
iterator, if any, and returns nil if no errors happened during
iteration, or the actual error otherwise.
Server cursors are automatically closed at the end of an iteration,
which means close will do nothing unless the iteration was
interrupted before the server finished sending results to the
driver. If Close is not called in such a situation, the cursor
will remain available at the server until the default cursor
timeout period is reached. No further problems arise.
More details about the behavior at:
- New Database.UpsertUser method and accompanying constants and types
to handle the new role-based permissions introduced 2.4+. The method
Database.AddUser still works in new databases that haven't explicitly
disabled the old user document format, but should be replaced as it
will eventually be dropped.
More details about the method and feature at:
- Fixed concurrency issue when acquiring socket, detected in
collaboration with Roger Peppe.
- Fixed race condition in the machine id initalization performed
during the first call to bson.ObjectId, provided by Roger Peppe.
- Improve IsDup so it handles all known variations of index key
duplication, this time via server code inspection. Problem
reported by Evan Shaw.
- Add Query.LogReplay method, as requested by Daniel Gottlieb.
- Clarified documentation of GridFS.Open* methods to mention
these files are for reading only, as suggested by Lars Conrad.
- Allow direct connection to replica set member in unknown state.
Problem reported by Sam Helman.
- Added test case to confirm authentication works on sharded setups,
including in harsh cases such as a lost primary. Scenario suggested
by Travis Reeder.
- The *Session values have lost the use of SetFinalizer. This helps
the garbage collector to free these values more timely, in exchange
for not trying to help with broken code that isn't closing sessions.
gustavo @ http://niemeyer.net