-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
Resyncing the session spec tests in PYTHON-2075 led to this test failure:
FAIL: test_sessions_dirty_session_errors_Dirty_implicit_session_is_discarded_(non-cursor_returning_read) (test.test_session.TestSpec) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/shane/git/mongo-python-driver/test/__init__.py", line 444, in wrap return f(*args, **kwargs) File "/Users/shane/git/mongo-python-driver/test/__init__.py", line 444, in wrap return f(*args, **kwargs) File "/Users/shane/git/mongo-python-driver/test/test_session.py", line 1395, in run_scenario self.run_scenario(scenario_def, test) File "/Users/shane/git/mongo-python-driver/test/utils_spec_runner.py", line 641, in run_scenario self.run_test_ops(sessions, collection, test) File "/Users/shane/git/mongo-python-driver/test/utils_spec_runner.py", line 547, in run_test_ops self.run_operations(sessions, collection, test['operations']) File "/Users/shane/git/mongo-python-driver/test/utils_spec_runner.py", line 458, in run_operations self._run_op(sessions, collection, op, in_with_transaction) File "/Users/shane/git/mongo-python-driver/test/utils_spec_runner.py", line 448, in _run_op result = self.run_operation(sessions, collection, op.copy()) File "/Users/shane/git/mongo-python-driver/test/utils_spec_runner.py", line 393, in run_operation result = cmd(**dict(arguments)) File "/Users/shane/git/mongo-python-driver/test/test_session.py", line 1373, in assert_different_lsid_on_last_two_commands self.assertNotEqual(event1.command['lsid'], event2.command['lsid']) AssertionError: {'id': Binary(b'PY\x1f247@\x7f\x890!\x90\xd0\xfe\xb1\\', 4)} == {'id': Binary(b'PY\x1f247@\x7f\x890!\x90\xd0\xfe\xb1\\', 4)}
The bug is that pymongo does not always mark an implicit session as "dirty" after a network error as required by the spec:
If a driver has a server session pool and a network error is encountered when executing any command with a ClientSession, the driver MUST mark the associated ServerSession as dirty. Dirty server sessions are discarded when returned to the server session pool.
- related to
-
PYTHON-2075 Add more sessions tests with more read and write commands
- Closed