-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: None
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>])