As some Java vendors already support CRaC I tried to play around with it and use it to minimize startup time. I'm able to create a checkpoint of JVM when I use DB. However, I'm facing some issues when I try to make a checkpoint when my app contains a gRPC server (Shaded Netty). It throws the following exceptions.
An exception during a checkpoint operation:
jdk.internal.crac.mirror.CheckpointException
Suppressed: jdk.internal.crac.mirror.impl.CheckpointOpenResourceException: FD fd=61 type=unknown path=anon_inode:[eventpoll]
at java.base/jdk.internal.crac.mirror.Core.translateJVMExceptions(Core.java:117)
at java.base/jdk.internal.crac.mirror.Core.checkpointRestore1(Core.java:188)
at java.base/jdk.internal.crac.mirror.Core.checkpointRestore(Core.java:286)
at java.base/jdk.internal.crac.mirror.Core.checkpointRestoreInternal(Core.java:299)
I'm using Ubuntu 22.04.2 LTS and Java Zulu21.32+17-CRaC-CA (build 21.0.2+13-LTS)
Also, I've created a small application to be able to reproduce it https://github.com/isabek/crac-grpc-example
I think I'm handling gRPC server termination incorrectly