-
Type: Bug
-
Resolution: Unresolved
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Server Programmability
-
ALL
Repro:
TEST_F(WhenAllSucceedTest, DoesNotReturnBrokenPromiseIfExecutorShutdownWhileWaiting) { // create a future waits on a barrier const auto kNumInputs = 5; auto [inputPromises, rawInputFutures] = makePromisesAndFutures<void>(kNumInputs); // Turn raw input Futures into ExecutorFutures. std::vector<ExecutorFuture<void>> inputFutures; for (auto i = 0; i < kNumInputs; ++i) { inputFutures.emplace_back(std::move(rawInputFutures[i]).thenRunOn(executor())); } auto result = whenAllSucceed(std::move(inputFutures)); executor()->shutdown(); for (auto i = 0; i < kNumInputs; ++i) { inputPromises[i].emplaceValue(); } result.get(); }
Can be solved in the same manner as SERVER-54735.