-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Fully Compatible
-
ALL
-
Sharding EMEA 2022-08-08
-
153
-
None
-
None
-
None
-
None
-
None
-
None
-
None
This unit test is intermittently failing because it wrongly assumes that this wait on a future to fail once the executor gets shut down.
This synthetic test consistently reproduces the issue:
TEST_F(ShardServerTestFixture, ShutdownExecutorDoesNotKillWaitOnFuture){
const std::string kExecName("CoolExecName");
auto net = executor::makeNetworkInterface(kExecName);
auto pool = std::make_unique<executor::NetworkInterfaceThreadPool>(net.get());
auto taskExecutor =
std::make_shared<executor::ThreadPoolTaskExecutor>(std::move(pool), std::move(net));
taskExecutor->startup();
SharedPromise<void> promise;
auto chainCompletion = ExecutorFuture<void>(taskExecutor)
.then([futureToWaitOn = promise.getFuture()](){
return futureToWaitOn; // Wait for the future to be marked as ready
}).share();
// Sleep a bit before shutting down the executor to make sure the chain arrives to `return futureToWaitOn;`
sleep(2);
taskExecutor->shutdown();
// The following line hangs forever (as long as `futureToWaitOn` is not ready) because the wait is not killed on executor shutdown
chainCompletion.getNoThrow().ignore();
}
- is related to
-
SERVER-68604 Re-enable `WaitForOngoingQueriesInvalidatedOnStepDown` unit test
-
- Closed
-