Summary
After discussion in the drivers-555-csot channel, it was decided that the CSOT spec is ambiguous about whether or not drivers should kill cursors after receiving timeout errors.
It was determined that drivers should cleanup cursors after receiving a timeout error, similar to how drivers should close a cursor after a network error (because the state of the cursor is unknown).
We should clarify the intended behavior in the spec. Additionally, spec tests should be updated to reflect this behavior (`timeoutMS is refreshed for getMore - failure` for both tailable and tailable-await data need updating).
Motivation
Who is the affected end user?
drivers.
How does this affect the end user?
drivers implementing CSOT might end up with divergent cursor behavior when receiving timeout errors.
How likely is it that this problem or use case will occur?
n/a
If the problem does occur, what are the consequences and how severe are they?
n/a
Is this issue urgent?
It would be good to address soon, before more drivers implement CSOT.
Is this ticket required by a downstream team?
no.
Is this ticket only for tests?
no.
Acceptance Criteria
- clarify the intended behavior of cursors when receiving timeout errors.
- spec tests should be updated to reflect this behavior (`timeoutMS is refreshed for getMore - failure` for both tailable and tailable-await data need updating).
- duplicates
-
DRIVERS-2751 Update spec tests to reflect new killCursor behavior for ConnectionFailure
- Closed
- related to
-
PYTHON-1755 PyMongo does not cleanup server side cursors after a getMore fails with a network error
- Backlog
-
DRIVERS-3005 Do not block timeout errors on cleanup operations
- Needs Triage