James Netherton created CAMEL-22207:
---------------------------------------

             Summary: camel-jbang: camel run --runtime=quarkus does not shut 
down cleanly
                 Key: CAMEL-22207
                 URL: https://issues.apache.org/jira/browse/CAMEL-22207
             Project: Camel
          Issue Type: Bug
          Components: camel-jbang
            Reporter: James Netherton


With Camel JBang if you do:

{code}
camel run foo.java --runtime=quarkus
{code}

Then ctrl-c to stop the application, shutdown does not happen cleanly due to an 
exception. On Linux / Mac you're forced to search for the pid and kill -9. 

I think it's due to the shutdown hook removing the app directory before Quarkus 
is fully stopped.

https://github.com/apache/camel/blob/608700b1aece227896a055efc022e839a9085445/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java#L1012-L1019

E.g there is logic in the HTTP server stop that potentially triggers loading of 
files that no longer exist, so you get:

{code}
io.vertx.core.VertxException: Thread blocked
        at java.base/jdk.internal.misc.Unsafe.park(Native Method)
        at 
java.base/java.util.concurrent.locks.LockSupport.park(LockSupport.java:221)
        at 
java.base/java.util.concurrent.CompletableFuture$Signaller.block(CompletableFuture.java:1864)
        at 
java.base/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780)
        at 
java.base/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725)
        at 
java.base/java.util.concurrent.CompletableFuture.waitingGet(CompletableFuture.java:1898)
        at 
java.base/java.util.concurrent.CompletableFuture.join(CompletableFuture.java:2117)
        at 
io.quarkus.bootstrap.runner.JarFileReference.asyncLoadAcquiredJarFile(JarFileReference.java:213)
        at 
io.quarkus.bootstrap.runner.JarFileReference.withJarFile(JarFileReference.java:147)
        at 
io.quarkus.bootstrap.runner.JarResource.getResourceData(JarResource.java:56)
        at 
io.quarkus.bootstrap.runner.RunnerClassLoader.loadClass(RunnerClassLoader.java:106)
        at 
io.quarkus.bootstrap.runner.RunnerClassLoader.loadClass(RunnerClassLoader.java:72)
        at io.vertx.core.impl.ContextImpl.close(ContextImpl.java:94)
        at 
io.vertx.core.impl.DeploymentManager$VerticleHolder.close(DeploymentManager.java:251)
        at 
io.vertx.core.impl.DeploymentManager$DeploymentImpl.lambda$null$5(DeploymentManager.java:352)
        at io.vertx.core.impl.future.FutureImpl$4.onSuccess(FutureImpl.java:176)
        at 
io.vertx.core.impl.future.FutureBase.lambda$emitSuccess$0(FutureBase.java:60)
        at io.vertx.core.impl.ContextImpl.execute(ContextImpl.java:312)
        at io.vertx.core.impl.ContextImpl.execute(ContextImpl.java:302)
        at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:57)
        at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:259)
        at io.vertx.core.Promise.tryComplete(Promise.java:121)
        at io.vertx.core.Promise.complete(Promise.java:77)
        at 
io.quarkus.vertx.http.runtime.VertxHttpRecorder$WebDeploymentVerticle.lambda$stop$1(VertxHttpRecorder.java:1468)
{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to