summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBilly Donahue <billy.donahue@mongodb.com>2021-09-17 11:07:12 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-09-17 11:30:59 +0000
commitd18734dcf759b3c43d93664934f6711a5c0e47bc (patch)
treef666ccd70b9ba59a5524ddf49ec0d5414c0b472b
parent2a82df1a0433d21bfb55ca7e6ff2b0d47822d34c (diff)
downloadmongo-d18734dcf759b3c43d93664934f6711a5c0e47bc.tar.gz
SERVER-60027 avoid makePromiseFuture in future_util
-rw-r--r--src/mongo/util/future_util.h21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/mongo/util/future_util.h b/src/mongo/util/future_util.h
index 82dde8159a6..34509cb2e4a 100644
--- a/src/mongo/util/future_util.h
+++ b/src/mongo/util/future_util.h
@@ -178,7 +178,8 @@ private:
if (cancelToken.isCanceled())
return ExecutorFuture<ReturnType>(executor, asyncTryCanceledStatus());
- auto [promise, future] = makePromiseFuture<ReturnType>();
+ Promise<ReturnType> promise{NonNullPromiseTag{}};
+ auto future = promise.getFuture();
auto wrappedPromise = std::make_unique<PromiseWithCustomBrokenStatus<ReturnType>>(
std::move(promise),
Status(ErrorCodes::ShutdownInProgress, "Terminated loop due to executor shutdown"));
@@ -359,7 +360,8 @@ private:
if (cancelToken.isCanceled())
return ExecutorFuture<ReturnType>(executor, asyncTryCanceledStatus());
- auto [promise, future] = makePromiseFuture<ReturnType>();
+ Promise<ReturnType> promise{NonNullPromiseTag{}};
+ auto future = promise.getFuture();
auto wrappedPromise = std::make_unique<PromiseWithCustomBrokenStatus<ReturnType>>(
std::move(promise),
Status(ErrorCodes::ShutdownInProgress, "Terminated loop due to executor shutdown"));
@@ -509,7 +511,8 @@ SemiFuture<ResultVector> whenAllSucceed(std::vector<FutureLike>&& futures) {
ResultVector intermediateResult;
};
- auto [promise, future] = makePromiseFuture<ResultVector>();
+ Promise<ResultVector> promise{NonNullPromiseTag{}};
+ auto future = promise.getFuture();
auto sharedBlock = std::make_shared<SharedBlock>(futures.size(), std::move(promise));
for (size_t i = 0; i < futures.size(); ++i) {
@@ -566,7 +569,8 @@ SemiFuture<void> whenAllSucceed(std::vector<FutureLike>&& futures) {
Promise<void> resultPromise;
};
- auto [promise, future] = makePromiseFuture<void>();
+ Promise<void> promise{NonNullPromiseTag{}};
+ auto future = promise.getFuture();
auto sharedBlock = std::make_shared<SharedBlock>(futures.size(), std::move(promise));
for (size_t i = 0; i < futures.size(); ++i) {
@@ -626,7 +630,8 @@ SemiFuture<ResultVector> whenAll(std::vector<FutureT>&& futures) {
Promise<ResultVector> resultPromise;
};
- auto [promise, future] = makePromiseFuture<ResultVector>();
+ Promise<ResultVector> promise{NonNullPromiseTag{}};
+ auto future = promise.getFuture();
auto sharedBlock = std::make_shared<SharedBlock>(futures.size(), std::move(promise));
for (size_t i = 0; i < futures.size(); ++i) {
@@ -678,7 +683,8 @@ SemiFuture<Result> whenAny(std::vector<FutureT>&& futures) {
Promise<Result> resultPromise;
};
- auto [promise, future] = makePromiseFuture<Result>();
+ Promise<Result> promise{NonNullPromiseTag{}};
+ auto future = promise.getFuture();
auto sharedBlock = std::make_shared<SharedBlock>(std::move(promise));
for (size_t i = 0; i < futures.size(); ++i) {
@@ -747,7 +753,8 @@ SemiFuture<Value> withCancellation(FutureT&& inputFuture, const CancellationToke
Promise<Value> resultPromise;
};
- auto [promise, future] = makePromiseFuture<Value>();
+ Promise<Value> promise{NonNullPromiseTag{}};
+ auto future = promise.getFuture();
auto sharedBlock = std::make_shared<SharedBlock>(std::move(promise));
std::move(inputFuture)