8000 Reduce the usage of CompletableFutures in graphql-java - scalars / enums and lists by bbakerman · Pull Request #3480 · graphql-java/graphql-java · GitHub
[go: up one dir, main page]

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
dd68781
Async can now wait on materialized objects
bbakerman Feb 20, 2024
7a4cccf
More polymorphic behavior
bbakerman Feb 22, 2024
940b004
Merge remote-tracking branch 'origin/master' into async-on-objects
bbakerman Feb 23, 2024
28a6940
Merge remote-tracking branch 'origin/master' into async-on-objects
bbakerman Feb 24, 2024
6d5d373
Tweaked to be slightly faster and how it allocates results
bbakerman Feb 24, 2024
54144fa
annotation not needed
bbakerman Feb 24, 2024
2936c21
Merge remote-tracking branch 'origin/master' into async-on-objects
bbakerman Feb 26, 2024
154f6f2
extra method needed for DF value auto casting
bbakerman Feb 28, 2024
7b9845f
Merge remote-tracking branch 'origin/remove-cf-from-instrumentation-c…
bbakerman Feb 29, 2024
033714f
Merge remote-tracking branch 'origin/git-rid-of-er-wrapping' into red…
bbakerman Feb 29, 2024
703941a
merged was bad - fixed up
bbakerman Feb 29, 2024
d4f9fb1
Merge remote-tracking branch 'origin/master' into reduce-cf-usage
bbakerman Feb 29, 2024
9f32ad5
First working version of less CFs
bbakerman Feb 29, 2024
e8af0fc
FieldValueInfo was wrong
bbakerman Feb 29, 2024
9e37e3a
null values are now allowed back and hence the assert made less sense
bbakerman Feb 29, 2024
9e79cfd
Merge remote-tracking branch 'origin/async-on-objects' into reduce-cf…
bbakerman Feb 29, 2024
41f925a
found a place that could be an object
bbakerman Feb 29, 2024
6fa38e6
using raw value in list code
bbakerman Feb 29, 2024
d890dfb
now using polymorphic list lookup
bbakerman Feb 29, 2024
c5a1ee0
Merge remote-tracking branch 'origin/master' into reduce-cf-usage
bbakerman Feb 29, 2024
5068a7d
Merge remote-tracking branch 'origin/master' into reduce-cf-usage
bbakerman Mar 1, 2024
dddb2c9
Merge remote-tracking branch 'origin/master' into reduce-cf-usage
bbakerman Mar 1, 2024
daa1760
Merged in master again
bbakerman Mar 1, 2024
33d76e8
Merge remote-tracking branch 'origin/master' into reduce-cf-usage
bbakerman Mar 1, 2024
02dad47
Dont eagerly create fieldinfo future
bbakerman Mar 2, 2024
2ca8d32
Merge remote-tracking branch 'origin/master' into async-on-objects
bbakerman Mar 2, 2024
da9e9ab
Made addObject non-generic for easy of use when polymorphic values co…
bbakerman Mar 2, 2024
9dd8f87
Merge remote-tracking branch 'origin/async-on-objects' into reduce-cf…
bbakerman Mar 2, 2024
b8aa8a6
merged in async-on-objects
bbakerman Mar 2, 2024
e22844c
Merge remote-tracking branch 'origin/master' into reduce-cf-usage
bbakerman Mar 3, 2024
0872304
Merge remote-tracking branch 'origin/master' into reduce-cf-usage
bbakerman Mar 5, 2024
bdea4a9
Merged in master
bbakerman Mar 5, 2024
8073c1f
Merge remote-tracking branch 'origin/master' into reduce-cf-usage
bbakerman Mar 26, 2024
378459f
Merged in master and fixed up some code
bbakerman Mar 26, 2024
fbb6909
Fixed up java agent
bbakerman Mar 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 18 additions & 11 deletions agent/src/main/java/graphql/agent/GraphQLJavaAgent.java
Original file line number Diff line number Diff line change
Expand Up @@ -170,26 +170,33 @@ public static void invokeDataFetcherEnter(@Advice.Argument(0) ExecutionContext e
@Advice.OnMethodExit
public static void invokeDataFetcherExit(@Advice.Argument(0) ExecutionContext executionContext,
@Advice.Argument(1) ExecutionStrategyParameters parameters,
@Advice.Return(readOnly = false) CompletableFuture<Object> result) {
@Advice.Return(readOnly = false) Object cfOrObject) {
// ExecutionTrackingResult executionTrackingResult = executionContext.getGraphQLContext().get(EXECUTION_TRACKING_KEY);
ExecutionTrackingResult executionTrackingResult = GraphQLJavaAgent.executionIdToData.get(executionContext.getExecutionId());
ResultPath path = parameters.getPath();
long startTime = executionTrackingResult.timePerPath.get(path);
executionTrackingResult.end(path, System.nanoTime());
if (result.isDone()) {
if (result.isCancelled()) {
executionTrackingResult.setDfResultTypes(path, DONE_CANCELLED);
} else if (result.isCompletedExceptionally()) {
executionTrackingResult.setDfResultTypes(path, DONE_EXCEPTIONALLY);
if (cfOrObject instanceof CompletableFuture) {
CompletableFuture<Object> result = (CompletableFuture<Object>) cfOrObject;
if (result.isDone()) {
if (result.isCancelled()) {
executionTrackingResult.setDfResultTypes(path, DONE_CANCELLED);
} else if (result.isCompletedExceptionally()) {
executionTrackingResult.setDfResultTypes(path, DONE_EXCEPTIONALLY);
} else {
executionTrackingResult.setDfResultTypes(path, DONE_OK);
}
} else {
executionTrackingResult.setDfResultTypes(path, DONE_OK);
executionTrackingResult.setDfResultTypes(path, PENDING);
}
// overriding the result to make sure the finished handler is called first when the DF is finished
// otherwise it is a completion tree instead of chain
cfOrObject = result.whenComplete(new DataFetcherFinishedHandler(executionContext, parameters, startTime));
} else {
executionTrackingResult.setDfResultTypes(path, PENDING);
// materialized value - not a CF
executionTrackingResult.setDfResultTypes(path, DONE_OK);
new DataFetcherFinishedHandler(executionContext, parameters, startTime).accept(cfOrObject, null);
}
// overriding the result to make sure the finished handler is called first when the DF is finished
// otherwise it is a completion tree instead of chain
result = result.whenComplete(new DataFetcherFinishedHandler(executionContext, parameters, startTime));
}

}
Expand Down
Loading
0