getappmap / getappmap/appmap-java

ConcurrentAccessException on CodeObject.children

Abierto
#30 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Java
Estrellas
88
Forks
17
Merge medio
2 d 2 h
PR fusionados (30 d)
1

Descripción

Hmm. Perhaps this is the cause, and if it is I believe the call site can be synchronized to avoid making CodeObject/CodeObjectTree thread safe:
https://github.com/applandinc/appmap-java/blob/less-mem_20200817/src/main/java/com/appland/appmap/record/Recorder.java#L110-L113

In short, writeEvent used to be synchronized. It's no longer synchronized due to the fact that we can encounter a lock when calling toString into the client application. It's certainly worth looking into. I'll defer to you @apotterri if you'd like to look into it now or as a follow on item.

Originally posted by @dustinbyrne in https://github.com/applandinc/appmap-java/pull/29#discussion_r475896188

Guía de contribución

Abrir la guía de contribución

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.

Línea de trabajo

Comienza con Recorder.java en el sitio de llamada a writeEvent al que se hace referencia en las líneas 110-113 y, a continuación, inspecciona CodeObject.children y CodeObjectTree para el camino de acceso concurrente indicado. Reproduce o confirma de otro modo si un writeEvent no sincronizado provoca ConcurrentAccessException, y establece una resolución verificada para ese fallo.

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

Evaluación

Stack tecnológico
java
Área
devtools
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
30/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.