framework and jdk:

spring-boot version: 3.2.0 spring version: 6.1.1 azul version: OpenJDK 64-Bit Server VM Zulu17.46+29-CRaC-CA (build 17.0.9+9-LTS, mixed mode, sharing) postgresql jdbc verson: 42.3.6 spring-boot-starter-amqp version: 3.2.0 amqp-client version: 5.19.0 crac verison: 1.4.0

run: java -Dspring.context.checkpoint=onRefresh -XX:CRaCCheckpointTo=./tmp_checkpoint -jar target/iho-patient-rest-2.0.0-SNAPSHOT.jar

I am currently working on integrating CRaC support with Spring Boot 3.2.0, as detailed in this GitHub pull request. During the checkpoint phase, I encountered an issue. jdbc and rabbitmq occur some errors.
" addr=/192.168.1.154,port=5432" is postgres jdbc port "addr=/192.168.1.211,port=5672" is rabbitmq port "addr=/192.168.1.211,port=9080" is external http port

the error log :

`2023-12-04T10:23:40.851+08:00 INFO 1850016 --- [patient] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2023-12-04T10:23:40.946+08:00 INFO 1850016 --- [patient] [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@1a2e563e 2023-12-04T10:23:40.948+08:00 INFO 1850016 --- [patient] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. 2023-12-04T10:23:41.039+08:00 INFO 1850016 --- [patient] [ main] c.c.c.h.c.d.c.MyBatisPlusConfiguration : Init CommonMapper 2023-12-04T10:23:43.716+08:00 WARN 1850016 --- [patient] [ main] o.s.b.a.f.FreeMarkerAutoConfiguration : Cannot find template location(s): [classpath:/templates/] (please add some templates, check your FreeMarker configuration, or set spring.freemarker.check-template-location=false) 2023-12-04T10:23:43.822+08:00 INFO 1850016 --- [patient] [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 1 endpoint(s) beneath base path '/actuator' 2023-12-04T10:23:43.867+08:00 WARN 1850016 --- [patient] [ main] c.b.m.core.metadata.TableInfoHelper : Can not find table primary key in Class: "com.cnhis.iho.patient.provider.entity.Aaw1". 2023-12-04T10:23:43.867+08:00 WARN 1850016 --- [patient] [ main] c.b.m.core.injector.DefaultSqlInjector : class com.cnhis.iho.patient.provider.entity.Aaw1 ,Not found @TableId annotation, Cannot use Mybatis-Plus 'xxById' Method. 2023-12-04T10:23:43.920+08:00 INFO 1850016 --- [patient] [ main] c.c.i.c.mq.config.RabbitMqBindingConfig : MQ&iho-common-mq start... 2023-12-04T10:23:43.927+08:00 INFO 1850016 --- [patient] [ main] o.s.a.r.c.CachingConnectionFactory : Attempting to connect to: [192.168.1.211:5672] 2023-12-04T10:23:43.989+08:00 INFO 1850016 --- [patient] [ main] o.s.a.r.c.CachingConnectionFactory : Created new connection: rabbitConnectionFactory#6f9ab79d:0/SimpleConnection@1b60d324 [delegate=amqp://admin@192.168.1.211:5672/, localPort=46944] 2023-12-04T10:23:44.045+08:00 INFO 1850016 --- [patient] [ main] c.c.i.c.mq.config.RabbitMqBindingConfig : MQ&iho-common-mq end data: {"exchange-iho-patient-vaa32-update":["queue-iho-patient-vaa32-update"],"exchange-iho-patient-push-hip":["queue-iho-patient-push-hip"],"exchange-iho-patient-test1":["queue-iho-patient-test1"],"exchange-iho-patient-notify-es-update":["queue-iho-patient-notify-es-update"]} 2023-12-04T10:23:44.082+08:00 INFO 1850016 --- [patient] [ main] o.s.c.support.DefaultLifecycleProcessor : Triggering JVM checkpoint/restore 2023-12-04T10:23:44.083+08:00 INFO 1850016 --- [patient] [ main] jdk.crac : Starting checkpoint 2023-12-04T10:23:44.085+08:00 INFO 1850016 --- [patient] [ main] jdk.crac : /home/chenglin/iho_project/iho-patient/iho-patient-rest/target/iho-patient-rest-2.0.0-SNAPSHOT.jar is recorded as always available on restore 2023-12-04T10:23:44.189+08:00 INFO 1850016 --- [patient] [ main] jdk.crac : Use -Djdk.crac.collect-fd-stacktraces=true to find the source. 2023-12-04T10:23:44.328+08:00 INFO 1850016 --- [patient] [ main] o.s.c.support.DefaultLifecycleProcessor : Restarting Spring-managed lifecycle beans after JVM restore 2023-12-04T10:23:44.328+08:00 WARN 1850016 --- [patient] [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Failed to take CRaC checkpoint on refresh 2023-12-04T10:23:44.391+08:00 INFO 1850016 --- [patient] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... 2023-12-04T10:23:44.393+08:00 INFO 1850016 --- [patient] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed. 2023-12-04T10:23:44.417+08:00 INFO 1850016 --- [patient] [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat] 2023-12-04T10:23:44.451+08:00 INFO 1850016 --- [patient] [ main] .s.b.a.l.ConditionEvaluationReportLogger :

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2023-12-04T10:23:44.496+08:00 ERROR 1850016 --- [patient] [ main] o.s.boot.SpringApplication : Application run failed

org.springframework.context.ApplicationContextException: Failed to take CRaC checkpoint on refresh at org.springframework.context.support.DefaultLifecycleProcessor$CracDelegate.checkpointRestore(DefaultLifecycleProcessor.java:534) ~[spring-context-6.1.1.jar!/:6.1.1] at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:193) ~[spring-context-6.1.1.jar!/:6.1.1] at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:965) ~[spring-context-6.1.1.jar!/:6.1.1] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:619) ~[spring-context-6.1.1.jar!/:6.1.1] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.2.0.jar!/:3.2.0] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) ~[spring-boot-3.2.0.jar!/:3.2.0] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) ~[spring-boot-3.2.0.jar!/:3.2.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) ~[spring-boot-3.2.0.jar!/:3.2.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1342) ~[spring-boot-3.2.0.jar!/:3.2.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1331) ~[spring-boot-3.2.0.jar!/:3.2.0] at com.cnhis.iho.patient.rest.PatientApplication.main(PatientApplication.java:20) ~[classes!/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) ~[iho-patient-rest-2.0.0-SNAPSHOT.jar:na] at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) ~[iho-patient-rest-2.0.0-SNAPSHOT.jar:na] at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) ~[iho-patient-rest-2.0.0-SNAPSHOT.jar:na] at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51) ~[iho-patient-rest-2.0.0-SNAPSHOT.jar:na] Caused by: org.crac.CheckpointException: null at org.crac.Core$Compat.checkpointRestore(Core.java:144) ~[crac-1.4.0.jar!/:na] at org.crac.Core.checkpointRestore(Core.java:237) ~[crac-1.4.0.jar!/:na] at org.springframework.context.support.DefaultLifecycleProcessor$CracDelegate.checkpointRestore(DefaultLifecycleProcessor.java:528) ~[spring-context-6.1.1.jar!/:6.1.1] ... 18 common frames omitted Suppressed: jdk.internal.crac.mirror.impl.CheckpointOpenSocketException: Socket[addr=/192.168.1.154,port=5432,localport=39318] at java.base/jdk.internal.crac.JDKSocketResourceBase.lambda$beforeCheckpoint$0(JDKSocketResourceBase.java:68) ~[na:na] at java.base/jdk.internal.crac.mirror.Core.checkpointRestore1(Core.java:169) ~[na:na] at java.base/jdk.internal.crac.mirror.Core.checkpointRestore(Core.java:286) ~[na:na] at java.base/jdk.internal.crac.mirror.Core.checkpointRestore(Core.java:265) ~[na:na] at jdk.crac/jdk.crac.Core.checkpointRestore(Core.java:72) ~[jdk.crac:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.crac.Core$Compat.checkpointRestore(Core.java:141) ~[crac-1.4.0.jar!/:na] ... 20 common frames omitted Suppressed: jdk.internal.crac.mirror.impl.CheckpointOpenSocketException: Socket[addr=/192.168.1.211,port=9080,localport=37590] at java.base/jdk.internal.crac.JDKSocketResourceBase.lambda$beforeCheckpoint$0(JDKSocketResourceBase.java:68) ~[na:na] at java.base/jdk.internal.crac.mirror.Core.checkpointRestore1(Core.java:169) ~[na:na] at java.base/jdk.internal.crac.mirror.Core.checkpointRestore(Core.java:286) ~[na:na] at java.base/jdk.internal.crac.mirror.Core.checkpointRestore(Core.java:265) ~[na:na] at jdk.crac/jdk.crac.Core.checkpointRestore(Core.java:72) ~[jdk.crac:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.crac.Core$Compat.checkpointRestore(Core.java:141) ~[crac-1.4.0.jar!/:na] ... 20 common frames omitted Suppressed: jdk.internal.crac.mirror.impl.CheckpointOpenSocketException: Socket[addr=/192.168.1.154,port=5432,localport=39334] at java.base/jdk.internal.crac.JDKSocketResourceBase.lambda$beforeCheckpoint$0(JDKSocketResourceBase.java:68) ~[na:na] at java.base/jdk.internal.crac.mirror.Core.checkpointRestore1(Core.java:169) ~[na:na] at java.base/jdk.internal.crac.mirror.Core.checkpointRestore(Core.java:286) ~[na:na] at java.base/jdk.internal.crac.mirror.Core.checkpointRestore(Core.java:265) ~[na:na] at jdk.crac/jdk.crac.Core.checkpointRestore(Core.java:72) ~[jdk.crac:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.crac.Core$Compat.checkpointRestore(Core.java:141) ~[crac-1.4.0.jar!/:na] ... 20 common frames omitted Suppressed: jdk.internal.crac.mirror.impl.CheckpointOpenSocketException: Socket[addr=/192.168.1.211,port=5672,localport=46944] at java.base/jdk.internal.crac.JDKSocketResourceBase.lambda$beforeCheckpoint$0(JDKSocketResourceBase.java:68) ~[na:na] at java.base/jdk.internal.crac.mirror.Core.checkpointRestore1(Core.java:169) ~[na:na] at java.base/jdk.internal.crac.mirror.Core.checkpointRestore(Core.java:286) ~[na:na] at java.base/jdk.internal.crac.mirror.Core.checkpointRestore(Core.java:265) ~[na:na] at jdk.crac/jdk.crac.Core.checkpointRestore(Core.java:72) ~[jdk.crac:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.crac.Core$Compat.checkpointRestore(Core.java:141) ~[crac-1.4.0.jar!/:na] ... 20 common frames omitted

`

Comment From: sdeleuze

Can you please provide a reproducer, either as an attached archive or a link to a repository?

Comment From: chenglin321

The TestBean class initializes the jdbc connection

repository demo link: https://github.com/chenglin321/demo-project006.git

Comment From: sdeleuze

What you observe in the reproducer is expected. As mentioned in Spring Framework related documentation:

When the -Dspring.context.checkpoint=onRefresh JVM system property is set, a checkpoint is created automatically at startup during the LifecycleProcessor.onRefresh phase. After this phase has completed, all non-lazy initialized singletons have been instantiated, and InitializingBean#afterPropertiesSet callbacks have been invoked; but the lifecycle has not started, and the ContextRefreshedEvent has not yet been published.

If you are using Spring portfolio project that performs connections to remote services at InitializingBean#afterPropertiesSet level, you may want to raise an issue on those projects bug tracker to ask moving that logic to LifecycleProcessor.onRefresh phase.

Comment From: chenglin321

What you observe in the reproducer is expected. As mentioned in Spring Framework related documentation:

When the -Dspring.context.checkpoint=onRefresh JVM system property is set, a checkpoint is created automatically at startup during the LifecycleProcessor.onRefresh phase. After this phase has completed, all non-lazy initialized singletons have been instantiated, and InitializingBean#afterPropertiesSet callbacks have been invoked; but the lifecycle has not started, and the ContextRefreshedEvent has not yet been published.

If you are using Spring portfolio project that performs connections to remote services at InitializingBean#afterPropertiesSet level, you may want to raise an issue on those projects bug tracker to ask moving that logic to LifecycleProcessor.onRefresh phase.

tks a lot . I have solved