Rewrite CompletableFutureExtension.allSettled to not use CompletableFuture.supplyAsync #1872
+4
−14
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We noticed a big drop in performance after switching to the new
CompletableFuture
basedFederatedTypeResolver
. Our investigations led us to the implementation ofCompletableFutureExtension.allSettled
which has the following issues:CompletableFuture.supplyAsync
which looses all thread local data (as we switch to another thread pool we have no control over), which breaks most tracing frameworks and all other thread local usagesthenApply
andexceptionally
work without nesting of futures. This avoids non-neglegible overheadI changed the accompanying test to expect another exception type as only
get()
throw aExecutionException
. This should not affect your public API as its an internal method and I could not find any other references toExecutionException
ingraphql-kotlin
s codebase.