Skip to content

Conversation

aloubyansky
Copy link
Member

@aloubyansky aloubyansky commented Jun 11, 2025

Fixes #48198

It fixes a few issues:

  • use the same kind of dependency model (production) on the client side, as on the remote side (since a mutable-jar is a production packaging);
  • local dependencies that have content in directories are packaged in JARs with names that reflect Maven artifact naming, instead of using directory names (such as classes) merging content of all the local dependencies in a single JAR and linking to it from multiple ResolvedDependencys;
  • use appmodel.dat update to trigger a restart instead of the deployment-class-path.dat, since the appmodel.dat includes information about the reloadable dependencies that would need to be updated on the remote side by the client requiring a restart.

@quarkus-bot quarkus-bot bot added area/core area/devtools Issues/PR related to maven, gradle, platform and cli tooling/plugins area/maven area/testing labels Jun 11, 2025
@aloubyansky aloubyansky added triage/backport-3.20 triage/backport-3.23 and removed area/core area/maven area/testing area/devtools Issues/PR related to maven, gradle, platform and cli tooling/plugins labels Jun 11, 2025
@quarkus-bot quarkus-bot bot added area/core area/devtools Issues/PR related to maven, gradle, platform and cli tooling/plugins area/maven area/testing labels Jun 11, 2025
@aloubyansky
Copy link
Member Author

@mkouba you might be interested in this failure

2025-06-11T15:52:04.8646153Z [ERROR]   NonAppEndpointsDisabledTest » Runtime io.quarkus.builder.BuildException: Build failure: Build failed due to errors
2025-06-11T15:52:04.8647800Z 	[error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: java.lang.NullPointerException: Cannot invoke "io.quarkus.arc.processor.InjectionPointInfo.isProgrammaticLookup()" because "injectionPoint" is null
2025-06-11T15:52:04.8649690Z 	at io.quarkus.arc.processor.UnusedBeans.findRemovableBeans(UnusedBeans.java:45)
2025-06-11T15:52:04.8650523Z 	at io.quarkus.arc.processor.BeanDeployment.removeUnusedBeans(BeanDeployment.java:498)
2025-06-11T15:52:04.8651524Z 	at io.quarkus.arc.processor.BeanDeployment.removeUnusedComponents(BeanDeployment.java:407)
2025-06-11T15:52:04.8652340Z 	at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:354)
2025-06-11T15:52:04.8653169Z 	at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:178)
2025-06-11T15:52:04.8653767Z 	at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:488)
2025-06-11T15:52:04.8654373Z 	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
2025-06-11T15:52:04.8655008Z 	at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)
2025-06-11T15:52:04.8655540Z 	at io.quarkus.builder.BuildContext.run(BuildContext.java:255)
2025-06-11T15:52:04.8656026Z 	at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
2025-06-11T15:52:04.8656630Z 	at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
2025-06-11T15:52:04.8657298Z 	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
2025-06-11T15:52:04.8657997Z 	at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
2025-06-11T15:52:04.8658715Z 	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
2025-06-11T15:52:04.8659275Z 	at java.base/java.lang.Thread.run(Thread.java:1583)
2025-06-11T15:52:04.8659931Z 	at org.jboss.threads.JBossThread.run(JBossThread.java:501)

@mkouba
Copy link
Contributor

mkouba commented Jun 12, 2025

@mkouba you might be interested in this failure

2025-06-11T15:52:04.8646153Z [ERROR]   NonAppEndpointsDisabledTest » Runtime io.quarkus.builder.BuildException: Build failure: Build failed due to errors
2025-06-11T15:52:04.8647800Z 	[error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: java.lang.NullPointerException: Cannot invoke "io.quarkus.arc.processor.InjectionPointInfo.isProgrammaticLookup()" because "injectionPoint" is null
2025-06-11T15:52:04.8649690Z 	at io.quarkus.arc.processor.UnusedBeans.findRemovableBeans(UnusedBeans.java:45)
2025-06-11T15:52:04.8650523Z 	at io.quarkus.arc.processor.BeanDeployment.removeUnusedBeans(BeanDeployment.java:498)
2025-06-11T15:52:04.8651524Z 	at io.quarkus.arc.processor.BeanDeployment.removeUnusedComponents(BeanDeployment.java:407)
2025-06-11T15:52:04.8652340Z 	at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:354)
2025-06-11T15:52:04.8653169Z 	at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:178)
2025-06-11T15:52:04.8653767Z 	at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:488)
2025-06-11T15:52:04.8654373Z 	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
2025-06-11T15:52:04.8655008Z 	at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:856)
2025-06-11T15:52:04.8655540Z 	at io.quarkus.builder.BuildContext.run(BuildContext.java:255)
2025-06-11T15:52:04.8656026Z 	at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
2025-06-11T15:52:04.8656630Z 	at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
2025-06-11T15:52:04.8657298Z 	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
2025-06-11T15:52:04.8657997Z 	at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
2025-06-11T15:52:04.8658715Z 	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
2025-06-11T15:52:04.8659275Z 	at java.base/java.lang.Thread.run(Thread.java:1583)
2025-06-11T15:52:04.8659931Z 	at org.jboss.threads.JBossThread.run(JBossThread.java:501)

@aloubyansky I've never seen this before and this particular test didn't fail yet. Also I wasn't able to reproduce it locally (using your branch). Could you pls apply the following patch so that we could identify the problematic piece of code on CI?

diff --git a/independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/Injection.java b/independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/Injection.java
index 25337632031..b539608784e 100644
--- a/independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/Injection.java
+++ b/independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/Injection.java
@@ -457,6 +457,9 @@ static Injection forInvokerArgumentLookups(ClassInfo targetBeanClass, MethodInfo
     public Injection(AnnotationTarget target, List<InjectionPointInfo> injectionPoints) {
         this.target = target;
         this.injectionPoints = injectionPoints;
+        if (injectionPoints.stream().anyMatch(ip -> ip == null)) {
+            throw new IllegalArgumentException("Null injection point detected for " + target);
+        }
     }
 
     boolean isMethod() {

@aloubyansky
Copy link
Member Author

@mkouba would you like this change to be merged into the main branch?

@mkouba
Copy link
Contributor

mkouba commented Jun 12, 2025

@mkouba would you like this change to be merged into the main branch?

I'd like to find the problem first but yes, it might be useful.

@aloubyansky
Copy link
Member Author

I suspect it might just be a rare glitch

@aloubyansky aloubyansky force-pushed the remote-dev-normal-model branch from c4e1257 to 9abbd09 Compare June 12, 2025 07:55
@quarkus-bot quarkus-bot bot added the area/arc Issue related to ARC (dependency injection) label Jun 12, 2025
@mkouba
Copy link
Contributor

mkouba commented Jun 12, 2025

I suspect it might just be a rare glitch

Ok, let's keep the assert then...

This comment has been minimized.

This comment has been minimized.

@aloubyansky aloubyansky force-pushed the remote-dev-normal-model branch from 2fc6d8f to 98e326b Compare June 13, 2025 13:01

This comment has been minimized.

@gsmet
Copy link
Member

gsmet commented Jun 14, 2025

@aloubyansky from what I can see, the failures are in the added test.

@aloubyansky
Copy link
Member Author

Yes, they are. And I don't think they are exactly caused by the changes but I'm still looking into it.
The original issue reported in the issue is fixed though. This is something else.

@aloubyansky
Copy link
Member Author

The reason the new test is failing on Windows is due to a a failure to delete a JAR due to it being locked (something else has it "open").

This comment has been minimized.

@aloubyansky
Copy link
Member Author

The CI looks good. This is ready for review. It fixes more issues than originally reported in the issue referenced in the description.

Copy link

quarkus-bot bot commented Jun 26, 2025

Status for workflow Quarkus CI

This is the status report for running Quarkus CI on commit 21cb2fe.

✅ The latest workflow run for the pull request has completed successfully.

It should be safe to merge provided you have a look at the other checks in the summary.

You can consult the Develocity build scans.

@gsmet gsmet merged commit b1c2c06 into quarkusio:main Jun 30, 2025
110 of 111 checks passed
@quarkus-bot quarkus-bot bot added this to the 3.25 - main milestone Jun 30, 2025
@gsmet gsmet modified the milestones: 3.25 - main, 3.24.2 Jul 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/arc Issue related to ARC (dependency injection) area/core area/devtools Issues/PR related to maven, gradle, platform and cli tooling/plugins area/maven area/testing area/vertx kind/bugfix triage/flaky-test
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Quarkus remote DEV mode fails on 999-SNAPSHOT over -dev dependencies
3 participants