Skip to content

Commit e5f5fa2

Browse files
ShaneHarveyajdavis
authored andcommitted
Revert read_preference pinning
1 parent a2937aa commit e5f5fa2

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

pymongo/client_session.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,10 @@
5252
from bson.timestamp import Timestamp
5353

5454
from pymongo import monotonic
55-
from pymongo.errors import ConnectionFailure, InvalidOperation, OperationFailure
55+
from pymongo.errors import (ConnectionFailure,
56+
InvalidOperation,
57+
OperationFailure)
58+
from pymongo.read_preferences import ReadPreference
5659

5760

5861
class SessionOptions(object):
@@ -127,8 +130,6 @@ class _Transaction(object):
127130
"""Internal class to hold transaction information in a ClientSession."""
128131
def __init__(self, opts):
129132
self.opts = opts
130-
self.read_preference = None
131-
self.address = None
132133

133134

134135
class ClientSession(object):
@@ -259,7 +260,7 @@ def _finish_transaction(self, command_name):
259260
stmtId=self._server_session.statement_id,
260261
session=self,
261262
write_concern=write_concern,
262-
read_preference=self._transaction.read_preference,
263+
read_preference=ReadPreference.PRIMARY,
263264
parse_write_concern_error=True)
264265
finally:
265266
self._server_session.reset_transaction()
@@ -334,18 +335,20 @@ def _apply_to(self, command, is_retryable, read_preference):
334335
return
335336

336337
if self.in_transaction:
338+
if read_preference != ReadPreference.PRIMARY:
339+
raise InvalidOperation(
340+
'read preference in a transaction must be primary, not: '
341+
'%r' % (read_preference,))
342+
337343
if self._server_session.statement_id == 0:
338344
# First statement begins a new transaction.
339-
self._transaction.read_preference = read_preference
340345
self._server_session._transaction_id += 1
341346
command['startTransaction'] = True
342347
read_concern = command.setdefault('readConcern', {})
343348
read_concern['level'] = 'snapshot'
344349
if (self.options.causal_consistency
345350
and self.operation_time is not None):
346351
read_concern['afterClusterTime'] = self.operation_time
347-
elif read_preference != self._transaction.read_preference:
348-
raise InvalidOperation('Transaction readPreference changed')
349352

350353
command['txnNumber'] = self._server_session.transaction_id
351354
command['stmtId'] = self._server_session.statement_id

0 commit comments

Comments
 (0)