Skip to content

Commit

Permalink
fix: convert executor for async operations by screenExecutor for …
Browse files Browse the repository at this point in the history
…`timeout*` methods, consistent with `CF` 🧵
  • Loading branch information
oldratlee committed Oct 15, 2024
1 parent e3babf4 commit 6772f6c
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,12 @@ static CffuFactory resetDefaultExecutor(CffuFactory fac, Executor defaultExecuto
return new CffuFactory(makeExecutor(defaultExecutor), fac.forbidObtrudeMethods());
}

private static Executor makeExecutor(Executor executor) {
private static Executor makeExecutor(Executor defaultExecutor) {
// check CffuMadeExecutor interface to avoid re-wrapping.
if (executor instanceof CffuMadeExecutor) return executor;
if (defaultExecutor instanceof CffuMadeExecutor) return defaultExecutor;

Executor wrapByProviders = wrapExecutorByProviders(CompletableFutureUtils.screenExecutor(executor));
requireNonNull(defaultExecutor, "defaultExecutor is null");
Executor wrapByProviders = wrapExecutorByProviders(CompletableFutureUtils.screenExecutor(defaultExecutor));
return wrapMadeInterface(wrapByProviders);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3198,7 +3198,7 @@ public static <C extends CompletableFuture<?>> C cffuOrTimeout(C cfThis, long ti
public static <C extends CompletableFuture<?>> C cffuOrTimeout(
C cfThis, Executor executorWhenTimeout, long timeout, TimeUnit unit) {
requireNonNull(cfThis, "cfThis is null");
requireNonNull(executorWhenTimeout, "executorWhenTimeout is null");
executorWhenTimeout = screenExecutor(requireNonNull(executorWhenTimeout, "executorWhenTimeout is null"));
requireNonNull(unit, "unit is null");

return hopExecutorIfAtCfDelayerThread(orTimeout(cfThis, timeout, unit), executorWhenTimeout);
Expand Down Expand Up @@ -3294,7 +3294,7 @@ C cffuCompleteOnTimeout(C cfThis, @Nullable T value, long timeout, TimeUnit unit
public static <T, C extends CompletableFuture<? super T>>
C cffuCompleteOnTimeout(C cfThis, @Nullable T value, Executor executorWhenTimeout, long timeout, TimeUnit unit) {
requireNonNull(cfThis, "cfThis is null");
requireNonNull(executorWhenTimeout, "executorWhenTimeout is null");
executorWhenTimeout = screenExecutor(requireNonNull(executorWhenTimeout, "executorWhenTimeout is null"));
requireNonNull(unit, "unit is null");

return hopExecutorIfAtCfDelayerThread(completeOnTimeout(cfThis, value, timeout, unit), executorWhenTimeout);
Expand Down

0 comments on commit 6772f6c

Please sign in to comment.