As discussed on the forum it seems when using a Java 14 Record the app hangs during startup.
2020-04-28T22:43:48.465+0200 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: STARTING
2020-04-28T22:43:48.465+0200 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Waiting until process started: command '/Users/marceloverdijk/.sdkman/candidates/java/14.0.0-open/bin/java'.
2020-04-28T22:43:48.469+0200 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: STARTED
2020-04-28T22:43:48.469+0200 [INFO] [org.gradle.process.internal.DefaultExecHandle] Successfully started process 'command '/Users/marceloverdijk/.sdkman/candidates/java/14.0.0-open/bin/java''
2020-04-28T22:43:48.469+0200 [DEBUG] [org.gradle.process.internal.ExecHandleRunner] waiting until streams are handled...
2020-04-28T22:43:48.486+0200 [QUIET] [system.out] OpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.
2020-04-28T22:43:48.525+0200 [QUIET] [system.out] Listening for transport dt_socket at address: 5005
2020-04-28T22:43:59.889+0200 [LIFECYCLE] [org.gradle.cache.internal.DefaultFileLockManager]
2020-04-28T22:43:59.889+0200 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
2020-04-28T22:43:59.889+0200 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
2020-04-28T22:43:59.890+0200 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
2020-04-28T22:43:59.890+0200 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
2020-04-28T22:43:59.890+0200 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
2020-04-28T22:43:59.890+0200 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
2020-04-28T22:44:09.891+0200 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
2020-04-28T22:44:09.891+0200 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
2020-04-28T22:44:09.892+0200 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
2020-04-28T22:44:09.892+0200 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
2020-04-28T22:44:09.892+0200 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
2020-04-28T22:44:09.892+0200 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
<==========---> 80% EXECUTING [28s]
When I remove the Java Record it work again.
I encountered this initially using Gradle, but even adding Maven setup to the project I see the same issue.
Attached is a reproducer.
Thanks for reporting.
Did you perhaps miss something in the reproducer, because it doesn't compile:
/home/gandrian/Downloads/quarkus-java-record-issue/quarkus-java-record-issue/src/test/java/com/example/domain/DriverTest.java:16: error: cannot find symbol
Driver driver;
^
symbol: class Driver
location: class DriverTest
/home/gandrian/Downloads/quarkus-java-record-issue/quarkus-java-record-issue/src/test/java/com/example/domain/DriverTest.java:20: error: cannot find symbol
driver = new Driver();
^
symbol: class Driver
location: class DriverTest
Ah, forgot to delete the Test. You can delete it safely.
(I removed the domain classes but not the test)
I've updated the zip as well.
I can indeed reproduce the problem.
The problem is the old ASM version. We need to get https://github.com/quarkusio/gizmo/pull/36 in order for records to work properly (there is a an exception that is not being shown which is java.lang.RuntimeException: java.lang.UnsupportedOperationException: This feature requires ASM8_EXPERIMENTAL)
Thx, for now I can skip using Records and just create an immutable class with an args constructor.
That way I can move to Records later without much impact.
Sounds like a plan.
FWIW, the reason why we haven't merged the PR above is that we are waiting for ByteBuddy to do a new release with ASM 8 support (ByteBuddy is used at build time with Hibernate, so we need to have same ASM version used everywhere).
Just read ByteBuddy did a new release today 馃挭
Yup, saw that too, so I'll probably be checking it out soon.
@gsmet I assume we first need I hibernate release to pick up the ByteBuddy change?
@marceloverdijk can you give it another try with master? Everything should be OK now, we updated to ASM 8 and newest ByteBuddy.
I just tried this with master and now the application starts.
So I'm going to mark as fixed by https://github.com/quarkusio/quarkus/pull/9042.
Feel free to open another issue if you encounter problems with records.
Thx!
:+1: