grafana / grafana/pyroscope-java

OpenJDK CRaC support

Aperta
#141 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Java
Stelle
126
Fork
48
Merge medio
4g 14h
PR unite (30g)
5

Descrizione

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

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

The issue names no source files, tests, or entry points. Start by tracing how the javaagent manages its server connection and review the CRaC checkpoint and restore lifecycle; done means the agent can close managed resources before a checkpoint and reopen them after restoration.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java
Ambito
backend
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.