8000 wip · graphql-java/graphql-java@df64da8 · GitHub
[go: up one dir, main page]

Skip to content

Commit df64da8

Browse files
committed
wip
1 parent 4655c4a commit df64da8

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

agent/src/main/java/graphql/agent/GraphQLJavaAgent.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@
1010
import net.bytebuddy.asm.Advice;
1111
import net.bytebuddy.implementation.bytecode.assign.Assigner;
1212
import org.dataloader.DataLoader;
13+
import org.dataloader.DataLoaderRegistry;
1314

1415
import java.lang.instrument.Instrumentation;
16+
import java.util.List;
1517
import java.util.Map;
1618
import java.util.Set;
1719
import java.util.concurrent.CompletableFuture;
@@ -113,12 +115,10 @@ public static void load(@Advice.This(typing = Assigner.Typing.DYNAMIC) Object da
113115
class DataLoaderRegistryAdvice {
114116

115117
@Advice.OnMethodEnter
116-
public static void dispatchAll() {
117-
// StackWalker instance = StackWalker.getInstance();
118-
// instance.forEach(stackFrame -> {
119-
// System.out.println(stackFrame.getClassName() + " " + stackFrame.getMethodName() + " " + stackFrame.getLineNumber());
120-
// });
121-
System.out.println("calling dispatchAll");
118+
public static void dispatchAll(@Advice.This(typing = Assigner.Typing.DYNAMIC) Object dataLoaderRegistry) {
119+
List<DataLoader<?, ?>> dataLoaders = ((DataLoaderRegistry) dataLoaderRegistry).getDataLoaders();
120+
ExecutionId executionId = GraphQLJavaAgent.dataLoaderToExecutionId.get(dataLoaders.get(0));
121+
System.out.println("calling dispatchAll for " + executionId);
122122
}
123123

124124
}
@@ -134,7 +134,13 @@ public static void executeOperationEnter(@Advice.Argument(0) ExecutionContext ex
134134

135135
@Advice.OnMethodExit
136136
public static void executeOperationExit(@Advice.Argument(0) ExecutionContext executionContext) {
137-
System.out.println("execution finished for: " + executionContext.getExecutionId());
137+
ExecutionId executionId = executionContext.getExecutionId();
138+
System.out.println("execution finished for: " + executionId);
139+
// cleanup
140+
GraphQLJavaAgent.executionDataMap.get(executionId).dataLoaderToName.forEach((dataLoader, s) -> {
141+
GraphQLJavaAgent.dataLoaderToExecutionId.remove(dataLoader);
142+
});
143+
GraphQLJavaAgent.executionDataMap.remove(executionContext.getExecutionId());
138144
}
139145
}
140146

0 commit comments

Comments
 (0)
0