-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Fully Compatible
-
ALL
-
131
The TenantMigrationRecipientService creates a Fetcher to retrieve files from the backup cursor used in the shard merge protocol. During shutdown of the PrimaryOnlyService, which means the captured shared pointer to the fetcher will also be destroyed, resulting in the destruction of the fetcher itself. This can result in deadlock during destruction when Fetcher::shutdown is called and tries to acquire the Fetcher mutex, which is already held by a previous Fetcher callback.
The solution here is to ensure that the Fetcher instance survives future completion by making the Fetcher a std::unique_ptr member of the TenantMigrationRecipientService class.
- is related to
-
SERVER-62176 Don't hold the Fetcher::_mutex while emplacing the completion promise
- Closed