Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Re-augmentation in jib image #41797

Closed
kpagratis opened this issue Jul 9, 2024 · 11 comments · Fixed by #41888
Closed

Re-augmentation in jib image #41797

kpagratis opened this issue Jul 9, 2024 · 11 comments · Fixed by #41888
Labels
area/container-image kind/bug Something isn't working
Milestone

Comments

@kpagratis
Copy link

Describe the bug

Running a re-augment in a jib image fails because it's trying to find the jar in a default location.

Expected behavior

No response

Actual behavior

No response

How to Reproduce?

I created the image like so

gradle <myapp>:build -Dquarkus.container-image.build=true \
    -Dquarkus.jib.platforms=linux/arm64 \
    -Dquarkus.container-image.tag=${imageTag} \
    -Dquarkus.container-image.push=false \
    -Dquarkus.package.jar.type=mutable-jar

when i attempt to run java -jar -Dquarkus.launch.rebuild=true quarkus-run.jar in the image i get the following stacktraces:

Exception in thread "main" java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:118)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doReaugment(QuarkusEntryPoint.java:90)
	at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:49)
	at io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:33)
Caused by: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
	[error]: Build step io.quarkus.deployment.pkg.steps.JarResultBuildStep#buildRunnerJar threw an exception: java.lang.IllegalStateException: java.nio.file.NoSuchFileException: /home/quarkus-app/app/server-unspecified.jar
	at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:858)
	at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
	at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
	at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2516)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2495)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1521)
	at java.base/java.lang.Thread.run(Thread.java:1583)
	at org.jboss.threads.JBossThread.run(JBossThread.java:483)
Caused by: java.nio.file.NoSuchFileException: /home/quarkus-app/app/server-unspecified.jar
	at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
	at java.base/sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.java:55)
	at java.base/sun.nio.fs.UnixFileSystemProvider.readAttributes(UnixFileSystemProvider.java:171)
	at java.base/sun.nio.fs.LinuxFileSystemProvider.readAttributes(LinuxFileSystemProvider.java:99)
	at java.base/java.nio.file.Files.readAttributes(Files.java:1853)
	at java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:1445)
	at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:724)
	at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:251)
	at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:180)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:345)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:316)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:282)
	at io.quarkus.bootstrap.runner.SerializedApplication.writeJar(SerializedApplication.java:183)
	at io.quarkus.bootstrap.runner.SerializedApplication.write(SerializedApplication.java:75)
	at io.quarkus.deployment.pkg.steps.JarResultBuildStep.buildThinJar(JarResultBuildStep.java:747)
	at io.quarkus.deployment.pkg.steps.JarResultBuildStep.buildRunnerJar(JarResultBuildStep.java:225)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849)
	... 7 more

	at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:331)
	at io.quarkus.runner.bootstrap.AugmentActionImpl.createProductionApplication(AugmentActionImpl.java:173)
	at io.quarkus.deployment.mutability.ReaugmentTask.main(ReaugmentTask.java:70)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	... 4 more
Caused by: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
	[error]: Build step io.quarkus.deployment.pkg.steps.JarResultBuildStep#buildRunnerJar threw an exception: java.lang.IllegalStateException: java.nio.file.NoSuchFileException: /home/quarkus-app/app/server-unspecified.jar
	at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:858)
	at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
	at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
	at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2516)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2495)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1521)
	at java.base/java.lang.Thread.run(Thread.java:1583)
	at org.jboss.threads.JBossThread.run(JBossThread.java:483)
Caused by: java.nio.file.NoSuchFileException: /home/quarkus-app/app/server-unspecified.jar
	at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
	at java.base/sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.java:55)
	at java.base/sun.nio.fs.UnixFileSystemProvider.readAttributes(UnixFileSystemProvider.java:171)
	at java.base/sun.nio.fs.LinuxFileSystemProvider.readAttributes(LinuxFileSystemProvider.java:99)
	at java.base/java.nio.file.Files.readAttributes(Files.java:1853)
	at java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:1445)
	at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:724)
	at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:251)
	at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:180)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:345)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:316)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:282)
	at io.quarkus.bootstrap.runner.SerializedApplication.writeJar(SerializedApplication.java:183)
	at io.quarkus.bootstrap.runner.SerializedApplication.write(SerializedApplication.java:75)
	at io.quarkus.deployment.pkg.steps.JarResultBuildStep.buildThinJar(JarResultBuildStep.java:747)
	at io.quarkus.deployment.pkg.steps.JarResultBuildStep.buildRunnerJar(JarResultBuildStep.java:225)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849)
	... 7 more

	at io.quarkus.builder.Execution.run(Execution.java:123)
	at io.quarkus.builder.BuildExecutionBuilder.execute(BuildExecutionBuilder.java:79)
	at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:160)
	at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:327)
	... 7 more
Caused by: java.lang.IllegalStateException: java.nio.file.NoSuchFileException: /home/quarkus-app/app/server-unspecified.jar
	at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:858)
	at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
	at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
	at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2516)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2495)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1521)
	at java.base/java.lang.Thread.run(Thread.java:1583)
	at org.jboss.threads.JBossThread.run(JBossThread.java:483)
Caused by: java.nio.file.NoSuchFileException: /home/quarkus-app/app/server-unspecified.jar
	at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
	at java.base/sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.java:55)
	at java.base/sun.nio.fs.UnixFileSystemProvider.readAttributes(UnixFileSystemProvider.java:171)
	at java.base/sun.nio.fs.LinuxFileSystemProvider.readAttributes(LinuxFileSystemProvider.java:99)
	at java.base/java.nio.file.Files.readAttributes(Files.java:1853)
	at java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:1445)
	at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:724)
	at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:251)
	at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:180)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:345)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:316)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:282)
	at io.quarkus.bootstrap.runner.SerializedApplication.writeJar(SerializedApplication.java:183)
	at io.quarkus.bootstrap.runner.SerializedApplication.write(SerializedApplication.java:75)
	at io.quarkus.deployment.pkg.steps.JarResultBuildStep.buildThinJar(JarResultBuildStep.java:747)
	at io.quarkus.deployment.pkg.steps.JarResultBuildStep.buildRunnerJar(JarResultBuildStep.java:225)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849)
	... 7 more

I was able to get re-augmentation to work but i had to set the quarkus.package.output-directory

java -jar -Dquarkus.launch.rebuild=true -Dquarkus.package.output-directory=${PWD} quarkus-run.jar

Output of uname -a or ver

No response

Output of java -version

No response

Quarkus version or git rev

No response

Build tool (ie. output of mvnw --version or gradlew --version)

No response

Additional information

No response

@kpagratis kpagratis added the kind/bug Something isn't working label Jul 9, 2024
@quarkus-bot
Copy link

quarkus-bot bot commented Jul 9, 2024

/cc @geoand (jib)

@geoand
Copy link
Contributor

geoand commented Jul 10, 2024

I'm actually a little confused.

Looking at:

gradle <myapp>:build -Dquarkus.container-image.build=true \
    -Dquarkus.jib.platforms=linux/arm64 \
    -Dquarkus.container-image.tag=${imageTag} \
    -Dquarkus.container-image.push=false \
    -Dquarkus.package.jar.type=mutable-jar

I assume you are attempting to create a container image.

But then you launch the application via:

java -jar -Dquarkus.launch.rebuild=true quarkus-run.jar

@kpagratis
Copy link
Author

kpagratis commented Jul 10, 2024

I'm actually attempting to start the app with
java -jar -Dquarkus.launch.rebuild=true -Dquarkus.package.output-directory=/home/jboss quarkus-run.jar && java -Djava.util.logging.manager=org.jboss.logmanager.LogManager -jar quarkus-run.jar

But I would expect not to have to set the quarkus.package.output-directory property

@kpagratis
Copy link
Author

And then the additional ask would be to have a mechanism to have the container re-augment prior to start. either with a configuration to the jib extension or with passing a environment variable to the container on start

@geoand
Copy link
Contributor

geoand commented Jul 11, 2024

I'm actually attempting to start the app with java -jar -Dquarkus.launch.rebuild=true -Dquarkus.package.output-directory=/home/jboss quarkus-run.jar && java -Djava.util.logging.manager=org.jboss.logmanager.LogManager -jar quarkus-run.jar

But I would expect not to have to set the quarkus.package.output-directory property

Ah, so these are the commands executed inside the container, correct?

@kpagratis
Copy link
Author

@geoand yes that's correct.

@geoand
Copy link
Contributor

geoand commented Jul 11, 2024

Gotcha, I'll have a look soon

@geoand
Copy link
Contributor

geoand commented Jul 15, 2024

@kpagratis can you check #41888 please?

@kpagratis
Copy link
Author

Sure I'll try today. Thanks!

@kpagratis
Copy link
Author

I just tried with the pr branch and am still seeing the exception when running
docker run -it --entrypoint "/bin/sh" <my image sha> -c "java -jar -Dquarkus.launch.rebuild=true quarkus-run.jar"

@geoand
Copy link
Contributor

geoand commented Jul 19, 2024

Any chance you can attach a sample that exhibits the problem?

@gsmet gsmet closed this as completed in 18ab787 Jul 23, 2024
gsmet added a commit that referenced this issue Jul 23, 2024
Fix issue with Jib and mutable jar rebuild
@quarkus-bot quarkus-bot bot added this to the 3.14 - main milestone Jul 23, 2024
@gsmet gsmet modified the milestones: 3.14 - main, 3.13.0 Jul 23, 2024
gsmet pushed a commit to gsmet/quarkus that referenced this issue Jul 23, 2024
holly-cummins pushed a commit to holly-cummins/quarkus that referenced this issue Jul 31, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/container-image kind/bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants