Release Notes - Python Driver - Version 3.11 - HTML format

Bug

  • [PYTHON-2098] - PyMongo does not publish Server or Topology change events for "Network error when reading or writing" or "not master" and "node is recovering"
  • [PYTHON-2101] - Test failures - test_validation_with_system_ca_certs fails on macOS-1014 EVG platform
  • [PYTHON-2117] - python_full_version comparison fails due to poor environment marker support in older setuptools versions
  • [PYTHON-2128] - Test failure - test_ssl.TestSSL.test_ssl_pem_passphrase
  • [PYTHON-2129] - Use error code to check for NamespaceNotFound errors
  • [PYTHON-2150] - test_timestamp_values fails on 32bit platforms
  • [PYTHON-2177] - Failed to start change stream (KeyError: 'operationTime')
  • [PYTHON-2182] - Cursor namespace is ignored
  • [PYTHON-2188] - OWASP security vulnerabilities in bson/buffer.c
  • [PYTHON-2189] - Transaction spec test for bulk write fails on latest (4.5) sharded cluster
  • [PYTHON-2191] - Double free in C extensions when realloc fails in buffer_grow
  • [PYTHON-2192] - Clarify hostname canonicalization logic.
  • [PYTHON-2205] - Connection pool can return connections from previous generations
  • [PYTHON-2212] - MongoClient does not mark a server Unknown when handling NotMaster errors embedded in a write concern error
  • [PYTHON-2214] - Test failure - test.test_transactions.TestTransactions.test_create_collection
  • [PYTHON-2215] - Test failure - test_collection.TestCollection.test_index_filter
  • [PYTHON-2254] - .clone() does not clone the .__empty attribute
  • [PYTHON-2260] - Compile warning "_POSIX_C_SOURCE" redefined on RHEL 7.0 with Python 2.7.5
  • [PYTHON-2295] - MongoClient with multiple hosts and directConnection=True does not raise an error
  • [PYTHON-2297] - Pool leaves socket open when authentication fails
  • [PYTHON-2304] - _RttMonitor very rarely keeps its connection alive after MongoClient.close()
  • [PYTHON-2305] - Faulty change stream resume logic can result in changes being missed
  • [PYTHON-2320] - Jython SSL + poll fails with AttributeError: 'SSLSocket' object has no attribute 'channel'
  • [PYTHON-2331] - set_memory_error warning: function declaration isn’t a prototype
  • [PYTHON-2334] - Gevent Timeout causing deadlock

Epic

New Feature

  • [PYTHON-1743] - Test Planned Maintenance Scenarios in Drivers
  • [PYTHON-2019] - Add support for validate command "background" option
  • [PYTHON-2034] - MONGODB-AWS authentication support
  • [PYTHON-2040] - Support PyOpenSSL
  • [PYTHON-2121] - Unify behavior around configuration for replica set discovery

Task

  • [PYTHON-1438] - Change handling of network errors or timeouts during connection handshake
  • [PYTHON-1651] - Bulk api does not publish CommandFailed events when commands fail with network errors
  • [PYTHON-1976] - Bump wire protocol version for 4.4
  • [PYTHON-2029] - Support shorter SCRAM conversation
  • [PYTHON-2030] - Collection and index creation in multi-doc txns
  • [PYTHON-2032] - Handle absence of 'ns' field in index specifications returned from listIndexes
  • [PYTHON-2035] - Support for allowDiskUse on find operations
  • [PYTHON-2036] - Allow passing hint to update_one/_many, find_one_and_update/_replace operations
  • [PYTHON-2037] - Improve testing around default writeConcern
  • [PYTHON-2068] - Test Failure - test_session.TestSession.test_unacknowledged_writes
  • [PYTHON-2073] - Add NPS Survey to all off-domain driver documentation
  • [PYTHON-2082] - Expand use of error labels for retryable writes (RetryableWriteError label)
  • [PYTHON-2085] - Change uri_options/auth-options spec test to enable conditional tests
  • [PYTHON-2093] - OCSP Support
  • [PYTHON-2094] - Migrate macos-1012 Evergreen builds to macos-1014
  • [PYTHON-2097] - Deprecate oplogReplay find command option from CRUD spec
  • [PYTHON-2099] - Make ExceededTimeLimit retryable writes error
  • [PYTHON-2102] - Test MongoDB 4.4 on Windows with Python 2.7, 3.4, 3.5, and 3.6
  • [PYTHON-2103] - GridFS index checking should support indexes created in the shell
  • [PYTHON-2112] - Redirect api.mongodb.com/python to pymongo.readthedocs.io
  • [PYTHON-2118] - Fix texts that use writeConcern.w > 50
  • [PYTHON-2119] - Fix failing mapReduce doctests caused by the MR in Agg project
  • [PYTHON-2120] - Test failure - test_change_streams_change_streams_errors_Change_Stream_should_error_when__id_is_projected_out
  • [PYTHON-2123] - Reduce Client Time To Recovery On Topology Changes
  • [PYTHON-2124] - Test suite should assert that gc.garbage is empty
  • [PYTHON-2126] - Refactor Monitor/SrvMonitor code to create PeriodicExecutors in one place
  • [PYTHON-2130] - Stop testing $where with CodeWScope on MongoDB 4.4+
  • [PYTHON-2138] - Move MONGODB-AWS Support to external library
  • [PYTHON-2139] - Test MONGODB-AWS support on Windows and macOS
  • [PYTHON-2140] - Test PyOpenSSL support on macOS
  • [PYTHON-2143] - Do not repeatedly resume if getMore receives the same error
  • [PYTHON-2148] - Test PyOpenSSL support on Windows
  • [PYTHON-2149] - Test PyOpenSSL support with MongoDB < 4.4
  • [PYTHON-2152] - Support Handling of Native UUID Types Specification
  • [PYTHON-2153] - test_raise_wtimeout hangs on 4.5 latest
  • [PYTHON-2154] - test_examples.TestTransactionExamples fails on 4.5-latest sharded clusters
  • [PYTHON-2155] - Add MongoDB 4.4 to Evergreen
  • [PYTHON-2161] - Add OCSP URI Option
  • [PYTHON-2165] - Deprecate the fsync and unlock MongoClient helpers and the is_locked attribute
  • [PYTHON-2170] - Driver support for server Hedged Reads
  • [PYTHON-2173] - Update comment in Transactions withTxn examples for the manual.
  • [PYTHON-2174] - SpecTestRunner for CRUD v2 format should be able to run against server versions without sessions support
  • [PYTHON-2201] - Deprecate the reindex helper
  • [PYTHON-2206] - Rename pool_id to generation to better match CMAP and SDAM specs
  • [PYTHON-2217] - Add MockupDB tests for mechanism negotiation (saslSupportedMechs)
  • [PYTHON-2218] - Test failure - test_max_staleness.TestMaxStaleness.test_last_write_date
  • [PYTHON-2236] - Reset the server pool only after marking the server Unknown
  • [PYTHON-2237] - Use sort when verifying contents of outcome collections
  • [PYTHON-2239] - Avoid 30 second stalls in TestMongoClientFailover
  • [PYTHON-2240] - Deprecate UUIDLegacy class
  • [PYTHON-2256] - Document that a ClientSession cannot be used for multiple operations concurrently
  • [PYTHON-2263] - Decoding of $uuid fields from extended JSON should respect UuidRepresentation
  • [PYTHON-2268] - Close clients created in test suite
  • [PYTHON-2271] - Add MongoDB 4.0, 4.2, 4.4 to mongo-python-driver-perf test
  • [PYTHON-2277] - Remove uuidRepresentation deprecation warnings
  • [PYTHON-2278] - Test failure - test_discovery_and_monitoring with Jython: None != {'clusterTime': Timestamp(0, 1)}
  • [PYTHON-2281] - Ensure KeepAliveTime is set to 120 seconds on Windows
  • [PYTHON-2292] - Doctest uuidRepresentation failure in FAQ page
  • [PYTHON-2293] - OCSP test script (tools/ocsptest.py) does not work on Windows
  • [PYTHON-2299] - Add "awaited" field to ServerHeartbeat events
  • [PYTHON-2311] - Test failure - test_streaming_protocol.TestStreamingProtocol.test_monitor_waits_after_server_check_error
  • [PYTHON-2328] - Test failure - test_topology.TestTopologyErrors.test_pool_reset

Improvement

  • [PYTHON-1787] - PyMongo exceptions raised from server errors should include the errorCode in the traceback message
  • [PYTHON-1998] - Add missing tests for aggregation pipeline in bulk write updates
  • [PYTHON-2024] - Skip publishing SDAM events for "equivalent" ServerDescriptions
  • [PYTHON-2076] - Provide importable APM event listeners
  • [PYTHON-2088] - Define how multiple phases should be handled in SDAM spec runner
  • [PYTHON-2113] - Specify behavior of empty authSource URI option
  • [PYTHON-2115] - Remove threading.Lock() from SocketChecker
  • [PYTHON-2116] - Add __repr__ to monitoring event classes
  • [PYTHON-2132] - Cache OCSP responses
  • [PYTHON-2136] - Provide diagnostic information in ServerSelectionTimeoutError exception message
  • [PYTHON-2142] - Allow hinting the delete command
  • [PYTHON-2144] - Test OCSP support on macOS and Windows
  • [PYTHON-2158] - Support speculative authentication attempts in isMaster
  • [PYTHON-2163] - Improve diagnostics of PyOpenSSL connection errors
  • [PYTHON-2168] - Ensure that the WriteConcernError "errInfo" object is propagated
  • [PYTHON-2179] - Tests drivers raise error if hint specified for unacknowledged delete using OP_MSG or OP_DELETE
  • [PYTHON-2181] - ChangeStreams should account for missing operationTime in aggregate command response
  • [PYTHON-2183] - Test that readPreferenceTags are always interpreted as an array
  • [PYTHON-2185] - Deprecate geoHaystack and geoSearch
  • [PYTHON-2186] - 'CommitQuorum' option support for 'createIndexes’ command on MongoDB 4.4
  • [PYTHON-2193] - Update Evergreen config to run the new OCSP responder
  • [PYTHON-2199] - Reduce race conditions in SDAM error handling
  • [PYTHON-2207] - Don't use admin database for FLE tests
  • [PYTHON-2208] - Revisions to "Issues and Help" pages of drivers documentation
  • [PYTHON-2219] - Document Hidden Index Option
  • [PYTHON-2220] - Update documentation for Text Search
  • [PYTHON-2221] - Resync SDAM error handling spec tests
  • [PYTHON-2243] - Raise informative error message when attempting a GridFS operation in a transaction
  • [PYTHON-2252] - Add examples and documentation for new UUID behavior
  • [PYTHON-2253] - allowDiskUse option for find should be documented as only being supported in 4.4+
  • [PYTHON-2255] - Reduce default keepalive time to align with Azure defaults
  • [PYTHON-2266] - Ensure OCSP and AWS auth are tested on both 4.4 and latest
  • [PYTHON-2282] - Add coverage for valid maxStalenessSeconds with no viable servers
  • [PYTHON-2285] - Don't start kill cursors thread until MongoClient actually connects
  • [PYTHON-2294] - Increase replSetStepDown timeout and run replSetFreeze to avoid "Unable to acquire X lock" errors
  • [PYTHON-2296] - Define behavior of connectTimeoutMS=0 with streaming protocol
  • [PYTHON-2306] - Test that ElectionInProgress is not resumed
  • [PYTHON-2315] - Treat CursorNotFound as a resumable change stream error
  • [PYTHON-3667] - Drivers should include topology description in server selection timeout errors

Edit/Copy Release Notes

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