-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Query Execution
-
Fully Compatible
-
ALL
-
200
cursor->save() inside SBE stage saveState() function could throw exception when storage is busy, we should retry saveState to make sure the engine is the right state to yield and restore.
The saveState should be in a separate try block to ensure the exception just comes from saveState not other operations after it.
The wait time between retries should be exponential increasing, this will give storage more time if it keep throw temporary unavailable exception.
We expect storage to throw a different exception to notice us to fail the query instead of retrying.
This ticket also includes a detail reading of saveState for all SBE stages in order to understand it deeply.