Shane Harvey
890cd26e1a
PYTHON-3288 Implement client side operation timeout ( #954 )
...
Add timeoutMS URI option and MongoClient keyword argument.
Add provisional/beta pymongo.timeout() api to set a deadline for a block of operations.
2022-06-06 15:36:52 -04:00
Steven Silvester
9f191d6bb3
PYTHON-3283 Remove Generic Typing from the ClientSession Class ( #952 )
2022-05-25 05:55:36 -05:00
Steven Silvester
b3604a81d3
PYTHON-3171 Add usage of NoReturn annotation ( #901 )
2022-03-16 15:26:10 -05:00
Julius Park
b737b843e9
PYTHON-2956 Drivers should check out an implicit session only after checking out a connection ( #876 )
2022-03-01 15:44:05 -08:00
Steven Silvester
a0fe7c03af
PYTHON-3120 Set up flake8 linting ( #868 )
2022-02-17 06:44:08 -06:00
Steven Silvester
5578999a90
PYTHON-1834 Use a code formatter ( #852 )
2022-02-09 06:44:28 -06:00
Steven Silvester
dd6c140d43
PYTHON-3060 Add typings to pymongo package ( #831 )
2022-02-02 21:12:36 -06:00
Shane Harvey
e154642968
Removed references to outdated server versions ( #812 )
2021-12-07 15:47:28 -08:00
Julius Park
4e086ba218
PYTHON-1915 Prohibit copying ClientSession objects ( #726 )
2021-09-15 12:05:09 -07:00
Shane Harvey
f9bfd11290
PYTHON-2870 Add support for man/text/latex/etc.. docs output ( #708 )
...
Regenerate sphinx makefile with sphinx-quickstart 3.5.4.
Remove problematic mongodoc sphinx extension.
2021-08-19 13:31:46 -07:00
Shane Harvey
9bc27c9c0b
PYTHON-2797 Update docs for 5.0 support
...
Add changelog entries for 3.11.2, 3.11.3, and 3.12.0.
2021-08-06 13:29:11 -07:00
Shane Harvey
a142125640
PYTHON-2775 Add docs for snapshot reads ( #662 )
2021-07-06 11:58:30 -07:00
Shane Harvey
fd845654fb
PYTHON-2776 Disable writes and other unsupported operations in snapshot reads ( #660 )
...
Rely on the server to report an error for unsupported snapshot read
operations by sending readConcern with all commands, even writes.
2021-06-30 20:01:43 -07:00
Shane Harvey
4152600ae6
PYTHON-2777 Raise client side error for snapshot reads on <5.0 ( #659 )
2021-06-29 14:40:48 -07:00
Shane Harvey
14160aed04
PYTHON-2767 Support snapshot reads on secondaries ( #656 )
...
Add the MongoClient.start_session snapshot option.
2021-06-25 16:12:12 -07:00
Shane Harvey
6bc5e088af
PYTHON-1272 Fix deadlock when garbage collecting pinned cursors and sessions ( #642 )
...
It's not safe to return the pinned connection to the pool from within
Cursor.del because the Pool's lock may be held by a python thread
while the cyclic garbage collector runs. Instead we send the cursor
cleanup request to the client's background thread. The thread will
send killCursors on the pinned socket and then return the socket to
the pool.
Also fixed a similar bug when garbage collecting a pinned session.
2021-06-22 17:29:26 -07:00
Shane Harvey
4c77d7c855
PYTHON-2677 Better wait queue timeout errors for load balanced clusters ( #639 )
...
Remove checkout argument in favor of SocketInfo.pin_txn/pin_cursor()
2021-06-21 18:29:36 -07:00
Shane Harvey
c8f32a7a37
PYTHON-2673 Connection pinning behavior for load balanced clusters ( #630 )
...
Tweak spec test because pymongo unpins cursors eagerly after errors.
Tweak spec test for PoolClearedEvent ordering when MongoDB handshake fails (see DRIVERS-1785).
Only skip killCursors for some error codes.
Rely on SDAM error handling to close the connection after a state change error.
Add service_id to various events.
Retain reference to pinned sockets to prevent premptive closure by CPython's cyclic GC.
2021-06-15 14:14:56 -07:00
Shane Harvey
93ac5e0277
PYTHON-2676 Add load balancer tests in EVG ( #625 )
...
Add load balancer spec tests
Ensure LB supports retryable reads/writes
Add assertNumberConnectionsCheckedOut, createFindCursor, ignoreResultAndError
Add PoolClearedEvent.service_id and fix isClientError unified test assertion
2021-05-27 15:05:26 -07:00
Shane Harvey
61c6876872
PYTHON-2635 Unpin sessions after all abortTransaction attempts ( #609 )
...
Add unified test runner for transactions.
2021-04-28 12:38:13 -07:00
Shane Harvey
95974617bd
PYTHON-1314 Remove Database.authenticate and Database.logout ( #568 )
2021-02-17 14:16:07 -08:00
Bernie Hackett
cf877e95c7
PYTHON-2503 Always use time.monotonic
...
For monotonic time needs.
2021-01-25 12:48:31 -08:00
Bernie Hackett
6c2d629006
PYTHON-2133 Remove Py2 compatibility from pymongo
2021-01-19 21:15:20 -08:00
Shane Harvey
ac2f506ba2
PYTHON-2453 Add MongoDB Versioned API ( #536 )
...
Add pymongo.server_api.ServerApi and the MongoClient server_api option.
Support Unified Test Format version 1.1 (serverParameters in
runOnRequirements)
Skip dropRole tests due to SERVER-53499.
2021-01-11 18:16:00 -08:00
Shane Harvey
17dca5c504
Revert "PYTHON-1915: Prohibit copying ClientSession objects ( #480 )"
...
This reverts commit 959039b213 .
2020-11-16 15:09:31 -08:00
ishmum123
959039b213
PYTHON-1915: Prohibit copying ClientSession objects ( #480 )
2020-08-21 11:10:40 -07:00
Shane Harvey
3c1dd61ae9
PYTHON-2256 Document that a ClientSession cannot be used for multiple operations concurrently ( #460 )
2020-07-08 17:40:02 -07:00
Shane Harvey
45a7963aac
PYTHON-2082 Retryable writes use the RetryableWriteError label
...
Use retryable write logic for transaction commit/abort.
Do not assign the TransientTransactionError label to errors outside a
transaction.
2020-05-19 10:49:28 -07:00
Shane Harvey
350ada10d5
PYTHON-2206 Rename pool_id to generation to better match CMAP spec
2020-04-16 11:46:54 -07:00
Shane Harvey
fd64f4dd64
PYTHON-2030 Support collection and index creation in multi-doc transactions
2020-04-02 12:20:50 -07:00
Shane Harvey
23a62433b6
PYTHON-1660 Clear MongoClient session pool after a fork
...
Note that a MongoClient instance is still not fork-safe. This change
avoids "Cannot start transaction X on session <SID> because a newer
transaction Y has already started" errors and other incorrect command
results caused by duplicate sessions in the child process.
2019-12-03 11:51:13 -08:00
Prashant Mital
f62c53f472
PYTHON-2020 Make ClientSession._in_transaction a public property
2019-11-01 16:58:38 -07:00
Shane Harvey
4170d8ac7f
PYTHON-1829 Support maxTimeMS for commitTransaction
...
Add max_commit_time_ms to TransactionOptions.
MaxTimeMSExpired errors on commit are labelled UnknownTransactionCommitResult.
with_transaction does not retry commit after MaxTimeMSExpired errors.
2019-06-04 15:44:32 -07:00
Shane Harvey
fc645a248e
PYTHON-1838 Discard ServerSessions involved in network errors
2019-06-04 15:43:55 -07:00
Shane Harvey
c29c21449e
PYTHON-1828 Send recoveryToken on abortTransaction
2019-04-29 14:57:50 -07:00
Shane Harvey
82131c4448
PYTHON-1671 Add ClientSession.with_transaction API ( #411 )
2019-03-07 13:37:13 -08:00
Shane Harvey
e64945101b
PYTHON-1684 Support sharded transactions recovery token ( #406 )
...
Transient errors inside transaction unpins the session.
Add brief docs about sharded transactions and add 3.9 changelog.
Tests changes:
Add spec tests for sharded transaction recoveryToken.
Speed up txn tests by reducing SDAM waiting time after a network error.
Remove outdated test workaround for killAllSessions.
2019-02-27 15:59:18 -08:00
Shane Harvey
3030a5a094
PYTHON-1730 Use w:majority when retrying commitTransaction ( #393 )
2019-02-27 15:56:48 -08:00
Shane Harvey
6bab444bd7
PYTHON-1673 Mongos pinning for sharded transactions
...
In a sharded transaction, a session is pinned to the mongos server
selected for the initial command. All subsequent commands in the same
transaction are routed to the pinned mongos server.
2019-02-27 15:56:48 -08:00
Shane Harvey
6fe00109c1
PYTHON-1650 Always increment txnNumber before starting a retryable write
2018-10-08 11:42:02 -07:00
Shane Harvey
35391b7c2c
BUMP 3.7.0
2018-06-26 14:08:42 -04:00
Shane Harvey
4f3b6467ab
PYTHON-1598 Fix transaction write concern inheritance
2018-06-26 12:07:12 -04:00
Shane Harvey
98e77ba1d2
PYTHON-1483 Prohibit unack'ed writes with explicit sessions
2018-06-25 13:55:50 -05:00
Bernie Hackett
cb34e31cb0
PYTHON-1560 - Update transaction documentation link
2018-06-24 14:55:35 -07:00
Shane Harvey
b5e9007af0
PYTHON-1508 PYTHON-1589 Expand where unknown commit label is raised
...
Remove has_label api.
Bump required server version for transactions.
2018-06-15 11:29:11 -07:00
Shane Harvey
e4317d286b
PYTHON-1508 Retryable commit/abort, has_error_label api
...
Retryable commitTransaction/abortTransaction.
Retry writes after certain writeConcernErrors.
Add has_error_label api.
Update unacknowledged write concern error messge.
Resync transaction tests and update test runner.
2018-06-07 14:39:52 -07:00
A. Jesse Jiryu Davis
7bd1fac5d6
Obsolete docstring for end_session
2018-06-04 21:54:12 -04:00
Shane Harvey
714577c83e
PYTHON-1508 commitTransaction can be called multiple times
...
This change allows applications to check if their transaction was commited or
not by repeatedly calling commit until the transaction state is known.
If a session is used after a commit for any operation (not including
another commit), the operation is not part of a transaction and the session's
transaction state is reset.
2018-05-29 14:33:21 -07:00
Shane Harvey
cac0d5548f
PYTHON-1508 Remove autoStartTransaction and resync tests
...
Also use the test file's database name and collection name.
2018-05-22 13:29:41 -07:00
Shane Harvey
5a652be993
PYTHON-1508 Add read_preference to TransactionOptions
...
All read operations use the transaction's read preference.
Add transaction read preference spec tests.
Remove write test in test_read_preferences.
2018-05-08 11:38:28 -07:00