-
Bug
-
Resolution: Unresolved
-
Critical
-
None
-
None
-
None
-
---
-
---
EJB subsystem suspend failures during shutdown
I've been working on EE TCK stuff recently and have noticed this in the logs a couple times:
0m01:18:15,282 INFO [org.jboss.as.server] (Thread-1) WFLYSRV0272: Suspending server 01:18:15,310 ERROR [org.jboss.as.server] (Thread-1) WFLYSRV0312: Caught exception during shutdown: java.util.concurrent.ExecutionException: java.lang.IllegalStateException at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396) at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.BootstrapImpl$ShutdownHook.suspend(BootstrapImpl.java:302) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.BootstrapImpl$ShutdownHook.shutdown(BootstrapImpl.java:259) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.BootstrapImpl$ShutdownHook.run(BootstrapImpl.java:245) Caused by: java.lang.IllegalStateException at org.jboss.msc@1.5.6.Final//org.jboss.msc.value.InjectedValue.getValue(InjectedValue.java:49) at org.jboss.as.ejb3@40.0.0.Beta1-SNAPSHOT//org.jboss.as.ejb3.suspend.EJBSuspendHandlerService.suspended(EJBSuspendHandlerService.java:195) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.ServerActivity.suspend(ServerActivity.java:101) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:243) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:206) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:223) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:206) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:223) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:206) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:223) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:206) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:223) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:206) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:223) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController.phaseStage(SuspendController.java:253) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController.lambda$suspend$2(SuspendController.java:130) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:213) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:206) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:223) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:206) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:223) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:206) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:223) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:206) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:223) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:206) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:223) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:206) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2$1.accept(SuspendController.java:238) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2$1.accept(SuspendController.java:231) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture.uniWhenCompleteStage(CompletableFuture.java:887) at java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:2325) at java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:144) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:245) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:206) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:223) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:206) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:223) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:206) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:223) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:206) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:223) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:206) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController$2.accept(SuspendController.java:223) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController.phaseStage(SuspendController.java:253) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.suspend.SuspendController.suspend(SuspendController.java:122) at org.jboss.as.server@32.0.0.Beta4//org.jboss.as.server.BootstrapImpl$ShutdownHook.suspend(BootstrapImpl.java:296) ... 2 more 01:18:15,325 INFO [org.jboss.as.server] (Thread-1) WFLYSRV0220: Server shutdown has been requested via an OS signal 01:18:15,321 INFO [org.jboss.as.connector.deployment] (MSC service thread 1-2) WFLYJCA0119: Unbinding connection factory named java:/jms/QueueConnectionFactory2 to alias jms/TopicConnectionFactory2 ... etc
The failure is on the EJBSuspendHandlerService call to
localTransactionContextInjectedValue.getValue().suspendRequests();
EJBSuspendHandlerService has a dependency on the service providing that value so I'd not expect that to fail unless the suspend call is happening after stopping of services has already begun. Perhaps that could somehow happen if the graceful shutdown times out, allowing shutdown to proceed, but the suspend process continues in the background. But the WFLYSRV0220 message is logged before shutdown begins to stop MSC services, and that is logged after the failure. So, ???