-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Catalog and Routing
-
3
-
None
-
3
-
None
-
None
-
None
-
None
-
None
-
None
Plenty of tests have been disabled from the stepdown and kill-primary suites using the `requires_getmore` tag because getMore may fail due to node restarts.
The command getMore can't be directly retried because the cursor has already been partially consumed. Hence, we'll need to apply a solution similar to SERVER-102964 in order to retry the entire query operation when a getMore fails.
Important notes to take into account:
- Note that the number of commands susceptible to failure is greater than on
SERVER-102964. This is because we need to deal with all types of cursor commands (like listCollections), whereas inSERVER-102964we needed to handle only with query cursor commands (which are find, aggregate and listIndexes). - Note that the list of retriable errors in this case will also need to be extended compared to
SERVER-102964, having to add errors like CursorNotFound and Interrupted. - We'll have to set internalQueryExecYieldPeriodMS back to its default value once QueryPlanKilled error gets retried on all suites.
- To be able to run getMore inside a transaction generated by network_error_and_txn_override.js, it's necessary to update the code that retries the txn in order to update the cursorId of the retried getMore command. Otherwise, a retried transaction will end up failing with the error 50804 "Cannot run getMore on cursor 8044461389463551599, which was created in transaction 1"
The tag `requires_getmore` should go away under this ticket in favor of `assumes_no_implicit_cursor_exhaustion`.
- is related to
-
SERVER-102964 Enable tests with getMore on balancer suites
-
- Closed
-