Changelog History
Page 4
-
v2.9.1.rc0 Changes
August 06, 2019🚀 This patch release in the 2.9 series fixes two issues:
-
v2.9.0 Changes
June 20, 2019🚀 This release of the Ruby driver adds the following major features:
- A rewrite of the connection pool code with improved monitoring, compliant with CMAP specification
- 0️⃣ A modern retryable reads implementation compliant with cross-driver retryable reads specification, enabled by default
- 0️⃣ Modern retryable writes are enabled by default
- Legacy retryable writes can be disabled in most cases
- Ability to specify multiple root certificates to the driver
- Ability to pass private key and certificate to driver via URI options
🚀 This release also officially deprecates support for Ruby versions less than 2.3. This release and version 2.10.0 will continue supporting Ruby 1.9-2.2, and versions 2.11.0 and newer will require at least Ruby 2.3.
🚀 Please review 2.9.0.rc0 and 2.9.0.rc1 for detailed lists of changes made. This release has one change since 2.9.0.rc1 to add
retryReads
URI option, which was unintentionally omitted in the initial implementation of retryable reads. -
v2.9.0.rc1 Changes
June 13, 2019🚀 This is a second release candidate for the upcoming 2.9.0 release which primarily improves TLS certificate and private key handling in various environments. The following notable tickets have been resolved:
- 💎 RUBY-1822 Support providing certificate chains as client certificates
- 💎 RUBY-1823 Support adding multiple CA certificates
- 🔧 RUBY-1830 Fix TLS connections configured via URI options in JRuby
🚀 We expect to release 2.9.0 final in about 1-2 weeks.
-
v2.9.0.rc0 Changes
May 23, 2019🚀 This is a preview of the 2.9.0 release, featuring the following major improvements/changes:
- 💎 RUBY-1560 Implementation of Connection Monitoring and Pooling spec
- 0️⃣ RUBY-1706 Modern retryable writes are enabled by default
- 💎 RUBY-1626 Added a knob to turn off legacy retryable writes
- 💎 RUBY-1562 Retryable reads implementation
The following minor improvements/changes were also made:
- 💎 RUBY-1668 Support 'startAfter' option to the $changeStream stage
- 💎 RUBY-1591 Field order of bson documents sent to server changed for better logging
- 💎 RUBY-1754 Certificate paths with unescaped slashes can now be specified in URI
- 💎 RUBY-1755 Repaired unusability of some URI options due to value conversion to Symbol
- 🔧 RUBY-1767 Repaired inability to configure TLS verification via URI options
- 💎 RUBY-1778 Repaired read concerns not being sent to server on certain operations
- 💎 RUBY-1798 Fixed retrieval of a document containing code field via a cursor from 3.0 server triggerring failure handling
🚀 We expect to release 2.9.0 final in about 2 weeks.
-
v2.8.0 Changes
March 21, 2019🚀 This feature release of the Ruby driver improves connection- and authentication- related diagnostics as well as streamlines handshake and authentication code.
🛠 The following issue has been fixed since 2.8.0.rc0:
🚀 Please review 2.8.0.rc0 release notes for the full list of changes.
-
v2.8.0.rc0 Changes
February 27, 2019🚀 This release builds on the 2.7.1 release by improving connection- and authentication-related diagnostics as well as streamlining handshake and authentication code.
The following notable tickets have been closed:
- 💎 RUBY-1728 Indicate which auth mechanism was used when auth fails
- 💎 RUBY-1743 Warn on handshake and auth failures
- 💎 RUBY-1744 When handshake/auth fails, indicate which server authentication was attempted against and whether ssl was used
- 💎 RUBY-1647 Reset connection pool on non-timeout network errors
- 💎 RUBY-1650 Rewrite connection handshake flow to not recurse
- 💎 RUBY-1717 Disconnecting connection pool should not reconnect connections
- 💎 RUBY-1441 Driver connects to cluster when closing stale sockets
🚀 We expect to release 2.8.0 final in about two weeks.
-
v2.7.2 Changes
March 21, 2019🚀 This is a maintenance release in the 2.7.x series. It fixes one issue in 2.7.1 potentially affecting applications' test suites:
-
v2.7.1 Changes
February 25, 2019🚀 This release is a maintenance release in the 2.7.x series. It primarily improves server monitoring and server selection diagnostics, as well as the convenient transaction API.
The following notable tickets have been closed:
- 💎 RUBY-1714 Check client & monitoring threads on server selection failures
- 💎 RUBY-1541 Server selection should fail immediately if the cluster has no servers
- 💎 RUBY-1715 Log ismaster retries on monitoring connections
- 💎 RUBY-1719 Unknown servers are not marked as such in summaries
- 💎 RUBY-1578 Driver attempts to read session attributes during response handling even if it determines sessions are not supported
- 💎 RUBY-1665 count_documents helper does not start transactions
- 💎 RUBY-1654 Implement w:majority when retrying commitTransaction
- 💎 RUBY-1693 Add timeout for with_transaction
-
v2.7.0 Changes
January 31, 2019🚀 This feature release of the Ruby driver features an improved SDAM implementation, unified URI options and a preview of the convenient API for transactions.
🚀 Please refer to release notes for 2.7.0.rc0 for the complete list of new features and changes.
🛠 2.7.0 fixes the following issue identified during the RC process:
-
v2.7.0.rc0 Changes
January 23, 2019🚀 This preview of the upcoming 2.7.0 feature release of the Ruby driver has the following major new features:
- 👀 RUBY-1431 SDAM and Server Selection Spec Compliance. Large portions of SDAM code have been rewritten to bring the driver in compliance with published MongoDB driver specifications. No changes to applications using MongoDB are required, however applications should see the following benefits:
- Faster server selection (including during failover in replica sets)
- Faster client initialization
- Better concurrency as more I/O is now done in background threads
- Improved logging and diagnostics of server discovery, topology changes and removal of servers from topology
- Better resiliency to connection and authentication errors
- SDAM events are now published in a more consistent manner
- Monitoring connections no longer authenticate, lessening load on the cluster
- Topology and server description objects are no longer mutated in place, simplifying change tracking for applications/APM implementors
- Locks have been added to synchronize topology updates
- It is possible to wait for background monitoring threads to terminate when closing the client
- 💎 RUBY-1559 Unified URI Options. This adds support for a multitude of options in MongoDB URIs to the driver, in a way consistent with other MongoDB-maintained drivers.
- 💎 RUBY-1574 Convenient API for Transactions. This adds a
with_transaction
method to session objects to provide an easier way to retry operations in a transaction until they commit successfully.
The following minor improvements have also been made:
- 💎 RUBY-1470 Enable SNI on jruby where possible
- 💎 RUBY-1608 Implement functionality to enable/disable TLS hostname verification
- 💎 RUBY-1629 Sequence connection setup (e.g. auth) events before command events using the connection
🛠 The following bugs have been fixed:
- 💎 RUBY-1353 max_staleness does not work due to seconds / milliseconds mismatch
- 💎 RUBY-1433 OperationError#code not set on duplicate key error
- 💎 RUBY-1474 SDAM events are not published when server is marked unknown during handshake
- 💎 RUBY-1481 Handshake & auth exceptions may make connections permanently unusable
- 📜 RUBY-1550 Error::Parser fails to correctly handle writeErrors
- 💎 RUBY-1464 Time offset ignored in aggregation queries when using ActiveSupport::TimeWithZone
- 💎 RUBY-1507 isMaster response changing causes nil reference in the session pool
📚 As well, a number of improvements have been made to tutorial and API documentation of the driver. Full list of fixed issues may be found here.
✅ This version of the driver has been tested with Ruby 2.6.
🚀 Lacking major issues we expect to release 2.7.0 final in about a week.
- 👀 RUBY-1431 SDAM and Server Selection Spec Compliance. Large portions of SDAM code have been rewritten to bring the driver in compliance with published MongoDB driver specifications. No changes to applications using MongoDB are required, however applications should see the following benefits: