Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OpenJDK CRaC support #141

Open
FilipPetrovic0 opened this issue Jan 31, 2024 · 0 comments
Open

OpenJDK CRaC support #141

FilipPetrovic0 opened this issue Jan 31, 2024 · 0 comments

Comments

@FilipPetrovic0
Copy link

FilipPetrovic0 commented Jan 31, 2024

I'm using Spring Boot app and I was hoping I could utilize the CRaC project. My app uses this 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:

elastic/apm-agent-java#2982
newrelic/newrelic-java-agent#1697
open-telemetry/opentelemetry-java-instrumentation#10363

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant