question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

devmode - Not using JVM instrumentation, but always full restart

See original GitHub issue

Describe the bug

I read from @maxandersen that in 1.11+ devmode new ability to detect wether a change can be applied using JVM instrumentation (what ides uses to update running jvms) or it requires a restart as devmode usually do.

Expected behavior

Hot swap/reload applying JVM instrumentation, without a restart.

Actual behavior

There´s always a restart, see logs below:

12:38:28: Executing task 'quarkusDev'...


> Task :quarkusGenerateCode
preparing quarkus application

> Task :compileJava
> Task :processResources UP-TO-DATE
> Task :classes

> Task :quarkusDev
Listening for transport dt_socket at address: 5005

2021-03-22 12:38:35,557 INFO  [io.quarkus] (Quarkus Main Thread) my-artifactId my-version on JVM (powered by Quarkus 1.12.2.Final) started in 3.008s. Listening on: http://localhost:8080
2021-03-22 12:38:35,561 INFO  [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
2021-03-22 12:38:35,562 INFO  [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, resteasy, resteasy-jackson]
2021-03-22 12:38:51,100 INFO  [io.qua.dep.dev.RuntimeUpdatesProcessor] (vert.x-worker-thread-1) Changed source files detected, recompiling [/Users/admin/dev/others/my-artifactId/src/main/java/org/my/group/MyResource.java]
2021-03-22 12:38:51,597 WARN  [io.qua.dep.dev.JavaCompilationProvider] (vert.x-worker-thread-1) system modules path not set in conjunction with -source 11, line -1 in [unknown source]
2021-03-22 12:38:51,663 INFO  [io.quarkus] (Quarkus Main Thread) my-artifactId stopped in 0.065s

2021-03-22 12:38:52,370 INFO  [io.quarkus] (Quarkus Main Thread) my-artifactId my-version on JVM (powered by Quarkus 1.12.2.Final) started in 0.701s. Listening on: http://localhost:8080
2021-03-22 12:38:52,371 INFO  [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
2021-03-22 12:38:52,371 INFO  [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, resteasy, resteasy-jackson]
2021-03-22 12:38:52,371 INFO  [io.qua.dep.dev.RuntimeUpdatesProcessor] (vert.x-worker-thread-1) Hot replace total time: 1.273s 

To Reproduce

  • I´ve used directly the output of
 mvn io.quarkus:quarkus-maven-plugin:1.12.2.Final:create \
    -DprojectGroupId=my-groupId \
    -DprojectArtifactId=my-artifactId \
    -DprojectVersion=my-version \
    -DclassName="org.my.group.MyResource" \
    -Dextensions="resteasy,resteasy-jackson" \
    -DbuildTool=gradle

Environment (please complete the following information):

Intellij IDEA community 2020.3 build 203.5981.155 (also from console directly) OS: Mac Quarkus 1.12.2

Output of java -version

java -version openjdk version “15” 2020-09-15 OpenJDK Runtime Environment (build 15+36-1562) OpenJDK 64-Bit Server VM (build 15+36-1562, mixed mode, sharing)

GraalVM version (if different from Java)

Not used

Quarkus version or git rev

1.12.2

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

Gradle 6.8.3

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Comments:6 (6 by maintainers)

github_iconTop GitHub Comments

2reactions
gleflochcommented, Mar 22, 2021

Good catch, I’m taking care of it.

0reactions
geoandcommented, Mar 22, 2021

It seems that the javaagent jvm arg is not set by default for gradle, unlike for maven: https://github.com/quarkusio/quarkus/blob/main/devtools/maven/src/main/java/io/quarkus/maven/DevMojo.java#L826. I was able to make the intrumentation work via:

quarkusDev {
    jvmArgs = ['-javaagent:/path/to/quarkus-class-change-agent-999-SNAPSHOT.jar']
}

Which of course not very user friendly 😉.

Yeah, we definitely need to make this work OOTB for Gradle

Read more comments on GitHub >

github_iconTop Results From Across the Web

Building applications with Maven - Quarkus
Whether Quarkus should enable its ability to not do a full restart when changes to classes are compatible with JVM instrumentation. If this...
Read more >
7 Production Checklist - Oracle Help Center
10/11. 7 Production Checklist. This chapter provides a checklist of areas that should be planned for and considered before moving from a development ......
Read more >
Quarkus 1.11 Introduces State Preserving Reload in ... - InfoQ
I work on Quarkus full time, mostly on the core and HTTP layers. ... to use Instrumentation if the class' signature has not...
Read more >
Speed up development and save time with Live Reload and ...
Entering Development Mode with CLI. $ quarkus dev --help. To start dev mode from the Quarkus CLI do: $ quarkus dev [INFO] ...
Read more >
App Agent Node Properties (D-E)
This property enables Java XML Binding and DOM Parser bytecode instrumentation rules. Set to true to enable. The change takes effect after a...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found