Details
-
Bug
-
Resolution: Fixed
-
Major - P3
-
None
-
None
-
None
-
Fully Compatible
-
ALL
-
Replication 2021-11-29
Description
A very old quirk of DBClientCursor is it will not actually kill a cursor on kill() or on destruction if the global shutdown flag is set. Before closing down WiredTiger for storage change it is necessary that FCBIS ensures the cursor is actually dead. The global shutdown flag is racy, so storage change may run after it is set.
Solution here is to add a scope guard which will positively kill the cursor using DBClientConnection itself, if the global shutdown flag is set (it can't be unset, so if we missed the close, it will always be set)