-
Type: Bug
-
Resolution: Unresolved
-
Priority: Major - P3
-
None
-
Affects Version/s: 4.4.9, 5.0.9, 6.0.9, 8.0.0-rc0, 7.0.8
-
Component/s: None
-
None
-
Cluster Scalability
-
ALL
-
v8.0
-
149
In the migration destination manager, AlternativeClientRegions are used to do writes that don't need to be done under the main op context's session. However, when certain operations are done (specifically those that will wait for write concern), the session from the original operation context still needs to be yielded and so runWithoutSession is called with the original operation context to yield the session, run the command, and reacquire the session.
Reacquiring the session can involve doing a read via dbDirectClient if the session is not found in memory. This will cause an invariant with the sequence of events in the migration destination manager since the opCtx is the original one but the client is from the alternative client region.
SERVER-87872 attempted to fix this simply by releasing the AlternativeClientRegion before calling runWithoutSession to return to the original client. However, both the applyMods part of chunk migration and the cloning phase, in the MigrationBatchInserter, call runWithoutSession on a different thread than the MigrateThread. The quick fix in SERVER-87872 was reverted by SERVER-88479 in favor of finding a more complete solution in this ticket.
- is related to
-
SERVER-87872 Migration Destination Manager should not check out a session with a mixed opCtx and Client
- Closed
-
SERVER-88479 Revert MigrationDestinationManager AlternativeClientRegion changes and blacklist tests
- Closed
-
SERVER-86741 Downgrade work for Implement Vectored Inserts Transactionally
- Closed
- related to
-
SERVER-90095 Re-enable JavaScript tests which were left disabled due to SERVER-88539
- Backlog
-
SERVER-89130 Revert changes from SERVER-86741
- Closed