Release Notes - Python Driver - Version 3.9 - HTML format

Bug

  • [PYTHON-1665] - PyMongo should send aggregate commands with $out to primary nodes
  • [PYTHON-1686] - URI Parser fails when some options have invalid values
  • [PYTHON-1701] - Test failure test_unpin_for_non_transaction_operation
  • [PYTHON-1722] - Test failure - test_test_uri_options_compression-options_Multiple_compressors_are_parsed_correctly
  • [PYTHON-1738] - Length field of gridfs files collection documents stored as Int32 instead of int64
  • [PYTHON-1739] - Test failure - test_change_stream.TestCollectionChangeStream.test_raises_error_on_missing_id
  • [PYTHON-1759] - Command failures on find/getMore do not reset the server's SDAM state
  • [PYTHON-1760] - Driver accepts two and one part hostnames in SRV URIs
  • [PYTHON-1772] - Test failure - test_transactions.TestTransactionsConvenientAPI mock timer prose tests
  • [PYTHON-1831] - Test failure - Spec tests for findAndModify fail
  • [PYTHON-1841] - ChangeStream should not resume after errors with NonRetryableChangeStreamError label
  • [PYTHON-1843] - BSON C module directly accesses private attributes.
  • [PYTHON-1859] - Test failure - Ubuntu 12.04 | serverVersion 3.6 | Sharded
  • [PYTHON-1867] - AttributeError: 'Cursor' object has no attribute '_Cursor__killed'
  • [PYTHON-1871] - ChangeStreams do not honor user-specified batch_size on the initial aggregate command
  • [PYTHON-1872] - Tests: AttributeError: 'SrvMonitor' object has no attribute '_seedlist'
  • [PYTHON-1873] - Test failure - TestCMAP
  • [PYTHON-1874] - Test failure - MockupDB aggregate tests fails
  • [PYTHON-1875] - Improper parsing of json $date without time-offset or time-secfrac
  • [PYTHON-1877] - Fix result assertion in change stream spec test
  • [PYTHON-1897] - Topology.close can open sockets and background threads
  • [PYTHON-1898] - Close topology events executor faster after the topology is garbage collected
  • [PYTHON-1901] - Avoid using readConcern snapshot in sharded transaction tests
  • [PYTHON-1902] - Connect Timeout not working for DNS timeout (mongodb+srv)
  • [PYTHON-1914] - MongoClient.is_locked uses the deprecated Database.current_op method
  • [PYTHON-1916] - C message module write_dict encodes and decodes RawBSONDocument
  • [PYTHON-1921] - A MongoClient configured for auto encryption cannot be re-used after close()
  • [PYTHON-1930] - Pure python BSON decoders don't support memoryviews with offsets
  • [PYTHON-1935] - Test failure - test_v2_db_aggregate_Aggregate_with__listLocalSessions_and_allowDiskUse
  • [PYTHON-1959] - Key vault operations must use read_concern and write_concern majority

Epic

New Feature

  • [PYTHON-1648] - Binary should accept memoryviews/buffer objects
  • [PYTHON-1670] - Implement Unified URI Options
  • [PYTHON-1671] - Implement Convenient API for Transactions
  • [PYTHON-1673] - Support mongos pinning for sharded transactions
  • [PYTHON-1674] - Retryable Reads
  • [PYTHON-1675] - Support polling SRV records for mongos discovery
  • [PYTHON-1677] - Connections survive primary stepdown
  • [PYTHON-1684] - Support sharded transactions recovery token
  • [PYTHON-1698] - Resync transactions tests to include test with session1 in APM expectations
  • [PYTHON-1699] - Support running commands as aggregation
  • [PYTHON-1713] - Resync change stream tests to test all new notification types
  • [PYTHON-1718] - Resync CRUD spec tests to use transaction spec test format
  • [PYTHON-1720] - Support 'startAfter' option to the $changeStream stage
  • [PYTHON-1723] - Add support for Zstandard compression
  • [PYTHON-1730] - Drivers should use majority write concern when retrying commitTransaction
  • [PYTHON-1733] - Regenerate test certificates with SHA256 signatures
  • [PYTHON-1737] - Add support for Split-Horizon Topology
  • [PYTHON-1740] - Support Retryable Writes on by Default
  • [PYTHON-1742] - Support postBatchResumeToken in change streams
  • [PYTHON-1754] - Add support for majority read concern level to Aggregation $out
  • [PYTHON-1785] - Provide utility encode and decode methods in BSON module
  • [PYTHON-1797] - Require retryable writes network error tests to run on mongos 4.2+
  • [PYTHON-1798] - Add the ability to specify a pipeline to an update command
  • [PYTHON-1803] - Document connection string and URI option precedence rules
  • [PYTHON-1829] - Support maxTimeMS for commitTransaction
  • [PYTHON-1842] - Add Connection Pool Monitoring events
  • [PYTHON-1882] - Add FLE AutoEncryptionOpts class
  • [PYTHON-1883] - Support explicit encryption of fields
  • [PYTHON-1884] - Support auto encryption for commands
  • [PYTHON-1934] - Raise an actionable error message when retryWrites fails due to using an unsupported storage engine
  • [PYTHON-1944] - Mark the FLE feature as "Beta" in driver docs
  • [PYTHON-1947] - Add codec_options to ClientEncryption class

Task

  • [PYTHON-1649] - Bump wire protocol version for 4.2
  • [PYTHON-1653] - Resync CRUD tests for new bulkWrite() tests
  • [PYTHON-1729] - Update Transactions Retry Example 3 to include read preference
  • [PYTHON-1774] - Evergreen XML unit test reporting fails with "no test results found"
  • [PYTHON-1793] - countDocuments should use group with _id: 1
  • [PYTHON-1794] - Use runOn syntax to specify transaction test requirements
  • [PYTHON-1795] - Update transactions test runner to workaround StaleDbVersion distinct bug
  • [PYTHON-1801] - Update Transactions count test for MongoDB >= 4.0.7
  • [PYTHON-1815] - Add tests for postBatchResumeToken support
  • [PYTHON-1816] - Test writes in transactions do not send writeConcern when collection write concern is w=0
  • [PYTHON-1817] - Amend change stream missing resume token tests for wire version 8+
  • [PYTHON-1827] - Unified URI options follow on work
  • [PYTHON-1828] - Send recoveryToken on abortTransaction
  • [PYTHON-1830] - Test MongoDB latest on amazon1-2018-test
  • [PYTHON-1839] - Deprecate waitQueueMultiple option
  • [PYTHON-1845] - Clarify resume token used in resuming and getResumeToken
  • [PYTHON-1847] - Documentation for countDocuments MUST mention estimatedDocumentCount
  • [PYTHON-1849] - Gevent doctest fails because monkey.patch_all() now returns a boolean
  • [PYTHON-1851] - Test that mapReduce fails in a causally consistent session in 4.2
  • [PYTHON-1866] - Spec: Finer-grained updates from aggregation via $merge
  • [PYTHON-1869] - OS removals for MongoDB 4.2
  • [PYTHON-1885] - Update change stream docs example for resume token access
  • [PYTHON-1887] - Stop testing 'latest' on archlinux
  • [PYTHON-1892] - Database-level aggregation should be tested on server versions 3.6+
  • [PYTHON-1905] - Only send fullDocument field with $changeStream pipeline stage when specified by user
  • [PYTHON-1906] - Skip new SRV test if dnspython isn't available
  • [PYTHON-1926] - Raise an error when attempting to auto encrypt a command if the maxWireVersion is less than 8
  • [PYTHON-1939] - [FLE] Implement prose tests for BSON size limits and batch splitting
  • [PYTHON-1940] - [FLE] Implement prose tests for views
  • [PYTHON-1941] - [FLE] Implement prose tests for Data key and double encryption
  • [PYTHON-1942] - [FLE] Implement prose tests for External Key Vault
  • [PYTHON-1946] - Rename encryption.Algorithm enum members
  • [PYTHON-1950] - ClientEncryption.encrypt should accept key_id as Binary subtype 4 and reject native UUID
  • [PYTHON-1955] - Add evergreen testing for client side encryption
  • [PYTHON-1957] - Don't use unix socket in default mongocryptd_uri

Improvement

  • [PYTHON-1659] - Test deleteMany and updateMany with retryWrites=true
  • [PYTHON-1761] - Report invalid SRV records
  • [PYTHON-1789] - Support index all paths: update documentation
  • [PYTHON-1838] - Discard ServerSessions involved in network errors
  • [PYTHON-1858] - Deprecate Database.current_op helper
  • [PYTHON-1863] - Mention ObjectId machine/PID bytes removal in 3.8.0 changelog
  • [PYTHON-1876] - Test MongoDB 4.2 in Evergreen
  • [PYTHON-1890] - Use runOn syntax to specify CRUD test requirements
  • [PYTHON-1899] - [FLE] Add a corpus test that exhaustively enumerates all ways to encrypt all BSON value types
  • [PYTHON-1900] - Add "connectionError" as a valid "reason" for a ConnectionCheckOutFailedEvent when connection set up fails
  • [PYTHON-1909] - Test suite should log tracebacks after a segfault
  • [PYTHON-1951] - Cap dnspython dependency at 1.16 on Python 2
  • [PYTHON-1952] - Add tests for ClientEncryption.close()

Edit/Copy Release Notes

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