Details
-
Bug
-
Resolution: Unresolved
-
Major - P3
-
None
-
None
-
None
-
Service Arch
-
ALL
Description
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.