Improve docs and add error log related to illegal activation of transaction
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 68/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- java
- Área
- backend, observability-sre
Línea de trabajo
Comienza en ElasticApmTracer.java, comparando activate() con currentTransaction() y el recorrido de Deque utilizado por los métodos relacionados. Reproduce el caso de una transacción anidada, actualiza el comportamiento de búsqueda y añade la documentación solicitada y el registro de error de activación ilegal. Se considera terminado cuando se devuelve la transacción activa más reciente y el comportamiento relacionado está cubierto mediante verificación.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Using multiple nested transactions, ElasticApm.currentTransaction() returns oldest transaction instead of newest created.
Activating a transaction transaction.activate() pushes the transaction to the head of the active stack:
ElasticApmTracer.java:
public void activate(TraceContextHolder<?> holder) {
if (logger.isDebugEnabled()) {
logger.debug("Activating {} on thread {}", holder, Thread.currentThread().getId());
}
((Deque)this.activeStack.get()).push(holder);
}
But when retrieving it, the last element of the stack is checked:
ElasticApmTracer.java:
public Transaction currentTransaction() {
TraceContextHolder<?> bottomOfStack = (TraceContextHolder)((Deque)this.activeStack.get()).peekLast();
if (bottomOfStack instanceof Transaction) {
return (Transaction)bottomOfStack;
....................
In the above method, peekLast() returns the oldest transaction instead of newly pushed one.
As multiple methods use Deque::peek(first element) to get active transaction, the logic inside currentTransaction() method should be change to iterate from first to last element:
@Nullable
public Transaction currentTransaction() {
- TraceContextHolder<?> bottomOfStack = (TraceContextHolder)((Deque)this.activeStack.get()).peekLast();
+ TraceContextHolder<?> bottomOfStack = (TraceContextHolder)((Deque)this.activeStack.get()).peek();
if (bottomOfStack instanceof Transaction) {
return (Transaction)bottomOfStack;
} else {
- Iterator it = ((Deque)this.activeStack.get()).descendingIterator();
+ Iterator it = ((Deque)this.activeStack.get()).iterator();
TraceContextHolder context;
do {
elastic-apm-agent-1.9.0
- Lenguaje dominante
- Java
- Estrellas
- 593
- Forks
- 338
- Merge medio
- 1 d 9 h
- PR fusionados (30 d)
- 13
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de elastic/apm-agent-java
-
Spring MVC View instrumentation incorrectly matches static render overloads (EasyPOI)Posiblemente ocupada @VelpulaGangavardhan la tomó hoy. Abiertoagent-java community triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
elastic/apm-agent-java#4594 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
agent-java
Dificultad 2/5 1-2 días Aptitud para principiantes 62/100
elastic/apm-agent-java#2844 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
agent-java community triage
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
elastic/apm-agent-java#4593 ·
Los mantenedores suelen responder en 1 día
-
agent-java community triage
elastic/apm-agent-java#4573 · 4 comentarios ·
Los mantenedores suelen responder en 1 día
-
agent-java
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
elastic/apm-agent-java#4549 ·
Los mantenedores suelen responder en 1 día
Todos los issues de elastic/apm-agent-java
Issues similares
-
agent:working documentation enhancement go:build lane:needs-decision
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Sanne/incus-spawn#1435 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
enhancement good first issue up-for-grabs
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
AnikethTS/ChangeRadar#22 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
openai/openai-java#1202 ·
Los mantenedores suelen responder en 1 día
-
admin sql type: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 2 días
-
library-new-request priority
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
oracle/graalvm-reachability-metadata#10911 · 1 comentario ·
Los mantenedores suelen responder en 1 día