quarkus: Devmode reload broken, NPE in `io.q.deployment.dev.ClassComparisonUtil` - "Cannot invoke "org.jboss.jandex.ClassInfo.flags()" because "old" is null"
Describe the bug
Suddenly, the below has started happening. This is only in the last few days, and I’m not sure if I can recall any change which prompted it:
13:26:36 ERROR traceId=575186d570bcca1e91df6c43c102e6c5, parentId=, spanId=6f2a1952011172f6, sampled=true [io.qu.de.de.RuntimeUpdatesProcessor] (vert.x-worker-thread-0) Failed to replace classes via instrumentation: java.lang.NullPointerException: Cannot invoke "org.jboss.jandex.ClassInfo.flags()" because "old" is null
at io.quarkus.deployment.dev.ClassComparisonUtil.isSameStructure(ClassComparisonUtil.java:23)
at io.quarkus.deployment.dev.RuntimeUpdatesProcessor.doScan(RuntimeUpdatesProcessor.java:497)
at io.quarkus.deployment.dev.RuntimeUpdatesProcessor.doScan(RuntimeUpdatesProcessor.java:436)
at io.quarkus.vertx.http.runtime.devmode.VertxHttpHotReplacementSetup$4.handle(VertxHttpHotReplacementSetup.java:152)
at io.quarkus.vertx.http.runtime.devmode.VertxHttpHotReplacementSetup$4.handle(VertxHttpHotReplacementSetup.java:139)
at io.vertx.core.impl.ContextBase.lambda$null$0(ContextBase.java:137)
at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:264)
at io.vertx.core.impl.ContextBase.lambda$executeBlocking$1(ContextBase.java:135)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:833)
What is interesting is that this only seems to happen when launched via ./gradlew quarkusDev
If I launch Quarkus by clicking “Start” in IntelliJ through the IDE launcher, it doesn’t happen
Unfortunately, attaching a reproducer may be hard because the codebase isn’t open-source and I’m not sure how to minimize it while removing all confidential code and keeping the same behavior 🙁
Expected behavior
No response
Actual behavior
No response
How to Reproduce?
No response
Output of uname -a or ver
Microsoft Windows [Version 10.0.22622.601]
Output of java -version
18
GraalVM version (if different from Java)
No response
Quarkus version or git rev
2.13.0-Final
Build tool (ie. output of mvnw --version or gradlew --version)
Gradle v7.5.1
Additional information
No response
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 19 (19 by maintainers)
Hahaha.
It shouldn’t be because conceptually it does not do anything weird, but 🤷🏼
cc @aloubyansky in case he has any ideas
quarkus.live-reload.instrumentation=false(which is the default however)Yeah that definitely gets my “strangest Quarkus bug I’ve ever encountered” trophy 🏆 🤣
There could certainly be a bigger issue at play, but we can try the guard and see if we get lucky 🙂
Very weird. I don’t see how
oldcan benullhere, although it would be trivial to guard against this case.