Details
-
Bug
-
Status: Closed
-
Major - P3
-
Resolution: Fixed
-
None
-
None
-
Minor Change
Description
It should not be possible to copy a ClientSession. A ClientSession maintains transaction state which cannot be duplicated. Also when a ClientSession is copied, the underlying server session is also duplicated, eventually resulting in duplicate _ServerSession objects in the pool:
>>> import copy |
>>> s = client.start_session() |
>>> s._server_session
|
<pymongo.client_session._ServerSession object at 0x10408b438> |
>>> s2 = copy.copy(s) |
>>> s._server_session
|
<pymongo.client_session._ServerSession object at 0x10408b438> |
>>> s2._server_session
|
<pymongo.client_session._ServerSession object at 0x10408b438> |
>>> client._topology._session_pool
|
deque([])
|
>>> s.end_session()
|
>>> s2.end_session()
|
>>> client._topology._session_pool
|
deque([<pymongo.client_session._ServerSession object at 0x10408b438>, <pymongo.client_session._ServerSession object at 0x10408b438>]) |