Details
-
Bug
-
Resolution: Unresolved
-
Major - P3
-
None
-
5.0.0, 6.0.0, 6.1.0, 7.0.0, 6.2.0-rc6, 7.2.0-rc0, 7.1.0-rc5
-
Cluster Scalability
-
ALL
-
0
-
2
Description
In BF-30149 it was found that in very rare cases it is possible for ReshardingCoordinator Instance to be destroyed before Instance::run() is called by the POS framework as described in this comment. In this case the ReshardingCoordinator destructor would be called following which ReshardingCoordinatorOpObserver destructor would invariant on promises:
ReshardingCoordinatorObserver::~ReshardingCoordinatorObserver() {
|
stdx::lock_guard<Latch> lg(_mutex);
|
invariant(_allDonorsReportedMinFetchTimestamp.getFuture().isReady());
|
invariant(_allRecipientsFinishedCloning.getFuture().isReady());
|
invariant(_allRecipientsReportedStrictConsistencyTimestamp.getFuture().isReady());
|
invariant(_allRecipientsDone.getFuture().isReady());
|
invariant(_allDonorsDone.getFuture().isReady());
|
}
|
We should pass through the invariant checks if Instance::run() is not called.