Remove reflection usage (getting Method) from geode (#3821)

This commit is contained in:
Mateusz Rzeszutek 2021-08-11 15:47:52 +02:00 committed by GitHub
parent 08d3766069
commit 4619d86c68
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 5 deletions

View File

@ -19,7 +19,6 @@ import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope; import io.opentelemetry.context.Scope;
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
import java.lang.reflect.Method;
import net.bytebuddy.asm.Advice; import net.bytebuddy.asm.Advice;
import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.matcher.ElementMatcher; import net.bytebuddy.matcher.ElementMatcher;
@ -68,13 +67,13 @@ public class GeodeRegionInstrumentation implements TypeInstrumentation {
@Advice.OnMethodEnter(suppress = Throwable.class) @Advice.OnMethodEnter(suppress = Throwable.class)
public static void onEnter( public static void onEnter(
@Advice.This Region<?, ?> region, @Advice.This Region<?, ?> region,
@Advice.Origin Method method, @Advice.Origin("#m") String methodName,
@Advice.Local("otelRequest") GeodeRequest request, @Advice.Local("otelRequest") GeodeRequest request,
@Advice.Local("otelContext") Context context, @Advice.Local("otelContext") Context context,
@Advice.Local("otelScope") Scope scope) { @Advice.Local("otelScope") Scope scope) {
Context parentContext = currentContext(); Context parentContext = currentContext();
request = GeodeRequest.create(region, method.getName(), null); request = GeodeRequest.create(region, methodName, null);
if (!instrumenter().shouldStart(parentContext, request)) { if (!instrumenter().shouldStart(parentContext, request)) {
return; return;
} }
@ -104,14 +103,14 @@ public class GeodeRegionInstrumentation implements TypeInstrumentation {
@Advice.OnMethodEnter(suppress = Throwable.class) @Advice.OnMethodEnter(suppress = Throwable.class)
public static void onEnter( public static void onEnter(
@Advice.This Region<?, ?> region, @Advice.This Region<?, ?> region,
@Advice.Origin Method method, @Advice.Origin("#m") String methodName,
@Advice.Argument(0) String query, @Advice.Argument(0) String query,
@Advice.Local("otelRequest") GeodeRequest request, @Advice.Local("otelRequest") GeodeRequest request,
@Advice.Local("otelContext") Context context, @Advice.Local("otelContext") Context context,
@Advice.Local("otelScope") Scope scope) { @Advice.Local("otelScope") Scope scope) {
Context parentContext = currentContext(); Context parentContext = currentContext();
request = GeodeRequest.create(region, method.getName(), query); request = GeodeRequest.create(region, methodName, query);
if (!instrumenter().shouldStart(parentContext, request)) { if (!instrumenter().shouldStart(parentContext, request)) {
return; return;
} }