-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Server Programmability
-
ALL
-
None
-
None
-
None
-
None
-
None
-
None
-
None
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.
- related to
-
SERVER-79072 Change the semantics for or ban ExecutorFuture::getAsync
-
- Open
-