Commit Graph

80 Commits

Author SHA1 Message Date
Shane Harvey
a886922157 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 13:28:06 -08:00
Shane Harvey
ecc852c322 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.
2018-12-06 15:28:58 -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
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
4a9c65eb22 PYTHON-1329 - OP_MSG unacknowledged bulk writes 2018-06-22 22:00:07 -07:00
Bernie Hackett
4d786fd0cd PYTHON-1329 - OP_MSG bulk writes 2018-06-21 16:03:20 -07:00
Shane Harvey
622d33d0cb PYTHON-1545 Support for retryable writeConcernErrors
Return proper BulkWriteResult after a retryable write succeeds.
Reduce retryable writes test suite time from 90 to 30 seconds by
reducing the heartbeat interval.
2018-06-14 09:51:08 -07:00
Bernie Hackett
dbf386c18c PYTHON-1527 - Fix default writeConcern override 2018-06-04 13:56:06 -07:00
Bernie Hackett
335cb97a34 PYTHON-1278, PYTHON-1553 - Support OP_COMPRESSED 2018-05-22 11:44:21 -07:00
Shane Harvey
7aeec7b56b PYTHON-1508 Remove stmtId from transaction commands
The statement identifier is no longer required by the server.
2018-04-25 16:04:13 -07:00
Shane Harvey
a2937aa8eb Revert "Pin transactions to a single server address"
This reverts commit 25bc0858ff566abfabadeca4a3fea177e9c2697c.
2018-04-16 09:57:45 -04:00
Shane Harvey
656aa1e703 Pin transactions to a single server address 2018-04-16 09:57:45 -04:00
Shane Harvey
cd92850b36 Test changing transaction readPreference
Add original readPreference to getMores to simplify code check.
2018-04-16 09:57:45 -04:00
A. Jesse Jiryu Davis
9df87b6401 prototype transaction tests 2018-04-16 09:57:45 -04:00
Bernie Hackett
507f954ed4 Update copyright dates 2017-12-01 17:23:39 -08:00
Shane Harvey
2a05236f61 PYTHON-1332 Only gossip cluster time on >= 3.6.
Do not add readConcern to explain.
Test explain with collation.
2017-11-30 14:53:14 -08:00
Shane Harvey
47302096f9 PYTHON-1339 Retryable multi-statement writes.
MongoClient with retryWrites=true works when the cluster does not support retryable writes.
2017-11-20 12:18:00 -08:00
Shane Harvey
b669cd86dc PYTHON-1332 Session may only be used by the client that started it.
Centralize $clusterTime receiving.
2017-11-17 09:27:21 -08:00
Bernie Hackett
4eda4ffaec PYTHON-1340 - Implement causally consistent reads 2017-11-09 17:16:55 -08:00
Shane Harvey
6a5856a608 PYTHON-1299 Remove unused MongoDB 2.4 bulk result code. 2017-11-08 10:59:36 -08:00
Shane Harvey
280efd2d72 PYTHON-1339 Generate a single message in _do_batched_write_command.
Ordered op_insert should check for errors on the last insert.
Use _Bulk API for Collection.insert.
Avoid sending acknowledged inserts as much as possible.
max_cmd_size already accounts for trailing null bytes.
2017-10-31 16:59:26 -04:00
A. Jesse Jiryu Davis
df018e88e2 PYTHON-1332 - Gossip $clusterTime 2017-10-12 09:08:38 -04:00
A. Jesse Jiryu Davis
dad61a058b PYTHON-1332 - Update session's last_use 2017-10-05 15:03:36 -04:00
A. Jesse Jiryu Davis
41096d5875 PYTHON-1332 - Check current user owns session 2017-10-02 12:05:11 -04:00
Shane Harvey
715cb0d27c PYTHON-1299 Remove acknowledged legacy writes.
Ordered unacknowledged bulk writes still use legacy writes and getLastError.
2017-09-29 12:09:24 -07:00
A. Jesse Jiryu Davis
c1ec855060 PYTHON-1332 - Send lsid with all commands 2017-09-29 14:52:26 -04:00
A. Jesse Jiryu Davis
2487e9b71f PYTHON-1332 - Session param for Collection methods 2017-09-11 17:46:44 -04:00
Shane Harvey
14ce90906c PYTHON-1296 Support array_filters updates.
Sync crud tests.
2017-09-08 12:23:40 -07:00
Shane Harvey
e89ed11113 PYTHON-1317 Deprecate legacy bulk write api.
Use Collection.bulk_write() in documentation examples.
Move deprecated bulk tests to test_legacy_api.
2017-08-04 21:41:29 -07:00
Shane Harvey
8eb1aefeff PYTHON-1336 Add collation support to Collection.bulk_write. 2017-08-03 15:21:04 -07:00
Luke Lovett
0fbdf85f53 PYTHON-1113 - Index collation documentation into API docs. 2016-09-07 15:15:15 -07:00
Luke Lovett
8fdb581c6a PYTHON-1113 - Support collation per operation.
This commit add the pymongo.collation.Collation class and associated enums.  A
collation may be sent with individual write operations when connected to MongoDB
3.4+. Unlike read and write concern, a collation may not be attached to a
database or collection instance.
2016-09-07 13:45:41 -07:00
Bernie Hackett
53a7bea492 PYTHON-1022 - Drop support for Python 3.2
This change removes the u() helper from bson.py3compat
and all of its uses in the driver and tests. PyPy3 continues
to be supported since, even though it is based on python 3.2.5,
it has always supported the u string prefix.

The README and install docs are now explicit about PyPy(3) support.
2016-06-15 10:05:43 -07:00
Luke Lovett
ecab1c9432 PYTHON-1090, PYTHON-1098 - Use sane codec options when reading write responses.
When reading a write response from the server, we now use the 'replace'
unicode_decode_error_handler and 'dict' as the document_class.
2016-06-01 13:34:18 -07:00
Luke Lovett
e4d3392f90 PYTHON-472 - Add a RawBSONDocument class that decodes its comprising bytes only on-demand.
This provides an API for inserting and returning raw BSON.
2015-11-18 15:00:09 -08:00
aherlihy
894775c70c Prohibit bypass_document_validation with w=0 2015-11-18 14:17:56 -08:00
aherlihy
f5b44ea35f PYTHON-982 - Support bypassDocumentValidation 2015-11-18 14:17:56 -08:00
Bernie Hackett
28885b25e8 PYTHON-952 - API improvements
This commit implements the following simplifications and improvements:

- The Subscriber ABC has been renamed to CommandListener
- The subscribe function has been renamed to register
- The COMMAND constant has been removed
- The get_subscribers function has been removed
- Command listeners can now be registered per MongoClient instance
  instead of just globally
2015-10-09 17:03:51 -07:00
Bernie Hackett
489d5172ee PYTHON-997 - Add FAQ entry about _id and document mutation 2015-10-05 10:52:02 -07:00
Bernie Hackett
9556805bce PYTHON-952 - Add spec test runner and fix bugs 2015-09-16 12:52:40 -07:00
Bernie Hackett
b80fa6d632 PYTHON-952 - Bulk write operations monitoring
This change adds monitoring of bulk write operations (i.e.
Collection.bulk_write, Collection.insert_many, Collection.insert with multiple
documents, Bulk.execute, etc.). It also fixes bugs in conversion of legacy
write results to write command result format and conversion of legacy queries
to find command documents. Finally, it adds an operation_id attribute to the
published events to tie related events together.
2015-09-10 09:10:19 -07:00
Bernie Hackett
0e4f79c7c3 PYTHON-952 - Non-bulk write operation monitoring 2015-08-21 12:47:08 -07:00
Bernie Hackett
5df17c2c63 PYTHON-818 - Remove unicode_literals future imports. 2015-03-27 10:08:11 -07:00
Bernie Hackett
aec685b374 Fix up copyright dates. 2015-03-25 11:55:02 -07:00
A. Jesse Jiryu Davis
8925a642ea Fix bulk result for legacy insert with write concern failure. 2015-03-21 20:49:24 -04:00
A. Jesse Jiryu Davis
62df1a7cf5 PYTHON-857 - Rename _get_socket_for_writes to _socket_for_writes. 2015-03-20 11:00:23 -04:00
A. Jesse Jiryu Davis
0b2bb1ad11 PYTHON-857 - Complete wire-protocol race fix in Bulk API. 2015-03-18 15:19:04 -04:00
A. Jesse Jiryu Davis
98922562cf PYTHON-857 - Simplify _Bulk.execute_no_results. 2015-03-18 15:19:04 -04:00
A. Jesse Jiryu Davis
1af1fd27db PYTHON-857 - Pass socket to Collection._insert() etc.
Prepare to solve the wire protocol race in the Bulk API. Acquire a socket
before calling Collection._insert, _update, or _remove.

Remove _Bulk.legacy_insert, which was obsoleted when we decided to ignore wnote
and jnote from legacy servers in #645fc3a65 for PYTHON-684.
2015-03-18 15:19:04 -04:00