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)