grafana / grafana/pyroscope-java

OpenJDK CRaC support

Abierto
#141 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Java
Estrellas
126
Forks
48
Merge medio
4 d 14 h
PR fusionados (30 d)
5

Descripción

I'm using Spring Boot app and I was hoping I could utilize the [CRaC](https://docs.azul.com/core/crac/crac-introduction) project. My app uses [this](https://github.com/grafana/pyroscope-java) javaagent to send profiling data to server.

In order for CRaC to work, so called checkpoint must be captured, and restored. Before checkpoint is captured, all open connections, sockets and files must be closed. Also, when restoring the checkpoint, every such connection,socket and file must be reopened so the app can perform the same way before the checkpoint was taken.

So the problem here is that pyroscope java agent has an open connection to server where it sends data to, and from the java code, we have no way to close/reopen such connection, meaning capturing the checkpoint is impossible.

The solution would be to make pyroaxopw javaagent CRaC compatible, meaning that the agent can automatically respond to checkpoint capturing/restoring by closing /reopening connections,sockets and files it manages.

That way capturing the checkpoint would be possible.

Other javaagents have the same issue with CRaC and are actively working on it:

https://github.com/elastic/apm-agent-java/issues/2982
https://github.com/newrelic/newrelic-java-agent/issues/1697
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/10363

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

El issue no indica archivos fuente, pruebas ni puntos de entrada. Empieza por rastrear cómo el javaagent gestiona su conexión con el servidor y revisa el ciclo de vida de checkpoint y restore de CRaC; se considera terminado cuando el agente puede cerrar los recursos gestionados antes de un checkpoint y volver a abrirlos después de la restauración.

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

Evaluación

Stack tecnológico
java
Área
backend
Tipo de issue
Nueva funcionalidad
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.