Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

trace_methods needs some definition at startup or redefining later fails

Abierto
#3,296 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
java

Línea de trabajo

Comienza con TraceMethodInstrumentation$TraceMethodAdvice y sigue el fallo a través de IndyBootstrap.java y ElasticApmAgent.java, especialmente la búsqueda de la correspondencia que se muestra en el stack trace. Reproduce el problema con trace_methods ausente al inicio y, después, establece elastic.apm.trace_methods tras 30 segundos. Se considera terminado cuando la configuración dinámica funciona sin un marcador de posición al inicio y los métodos del paquete seleccionado comienzan a producir transacciones después de la redefinición.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

agent-java

Describe the bug

trace_methods is dynamic, but it looks like it needs to be defined with SOMETHING at startup, then it can successfully be redefined. But if not defined at all at startup, the redefinition fails with mapping errors

java.lang.IllegalStateException: There's no mapping for key co.elastic.apm.agent.tracemethods.TraceMethodInstrumentation$TraceMethodAdvice

Steps to reproduce

Do NOT define trace_methods at startup (ie it should be absent from properties and config files), then sometime after startup define it, eg

        new Thread(() -> {
                try {Thread.sleep(30_000L);} catch (InterruptedException e) {}
                System.setProperty("elastic.apm.trace_methods", "somepackage.*");
        }).start();

Expected behavior

For that example, all methods in somepackage should produce no transactions until about 30 seconds after startup, when it should start producing transactions for any method executed in somepackage

Debug logs

2023-08-21 14:48:06,614 [Thread-16] ERROR co.elastic.apm.agent.bci.IndyBootstrap - There's no mapping for key co.elastic.apm.agent.tracemethods.TraceMethodInstrumentation$TraceMethodAdvice
java.lang.IllegalStateException: There's no mapping for key co.elastic.apm.agent.tracemethods.TraceMethodInstrumentation$TraceMethodAdvice
	at co.elastic.apm.agent.bci.ElasticApmAgent.getInstrumentationClassLoader(ElasticApmAgent.java:946) ~[elastic-apm-agent-1.38.1-SNAPSHOT.jar:1.38.1-SNAPSHOT]
	at co.elastic.apm.agent.bci.IndyBootstrap.internalBootstrap(IndyBootstrap.java:416) ~[elastic-apm-agent-1.38.1-SNAPSHOT.jar:1.38.1-SNAPSHOT]
	at co.elastic.apm.agent.bci.IndyBootstrap.bootstrap(IndyBootstrap.java:389) ~[elastic-apm-agent-1.38.1-SNAPSHOT.jar:1.38.1-SNAPSHOT]
	at jdk.internal.reflect.GeneratedMethodAccessor16.invoke(Unknown Source) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
	at java.lang.IndyBootstrapDispatcher.bootstrap(IndyBootstrapDispatcher.java:61) ~[?:?]
	at java.lang.invoke.BootstrapMethodInvoker.invoke(BootstrapMethodInvoker.java:147) ~[?:?]
	at java.lang.invoke.CallSite.makeSite(CallSite.java:315) ~[?:?]
	at java.lang.invoke.MethodHandleNatives.linkCallSiteImpl(MethodHandleNatives.java:281) ~[?:?]
	at java.lang.invoke.MethodHandleNatives.linkCallSite(MethodHandleNatives.java:271) ~[?:?]
	at wimtjgf.ScoreUI.getGcTime(ScoreUI.java:215) ~[bin/:?]
	at wimtjgf.ScoreUI.lambda$2(Unknown Source) ~[bin/:?]
	at java.lang.Thread.run(Thread.java:833) [?:?]

Workaround

Add a dummy trace_methods definition at startup, eg -Delastic.apm.trace_methods=nothing.at.all then redefine dynamically as desired

Lenguaje dominante
Java
Estrellas
593
Forks
338
Merge medio
1 d 3 h
PR fusionados (30 d)
9

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de elastic/apm-agent-java

Todos los issues de elastic/apm-agent-java

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.