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

Upgrade to Quarkus 2.14.0.CR1 #673

Merged
merged 4 commits into from
Oct 27, 2022
Merged

Upgrade to Quarkus 2.14.0.CR1 #673

merged 4 commits into from
Oct 27, 2022

Conversation

gsmet
Copy link
Member

@gsmet gsmet commented Oct 26, 2022

No description provided.

@quarkus-bot

This comment has been minimized.

@gsmet
Copy link
Member Author

gsmet commented Oct 26, 2022

The platform situation is pretty bad:

  • Camel Quarkus tests are failing because of:
2022-10-26T13:59:18.9016369Z Caused by: java.lang.ClassCastException: class org.jboss.jandex.MethodParameterInfo cannot be cast to class org.jboss.jandex.Type (org.jboss.jandex.MethodParameterInfo and org.jboss.jandex.Type are in unnamed module of loader io.quarkus.bootstrap.classloading.QuarkusClassLoader @68e5c7ae)
2022-10-26T13:59:18.9017743Z 	at org.apache.camel.quarkus.core.deployment.InjectionPointsProcessor.injectedComponents(InjectionPointsProcessor.java:130)
2022-10-26T13:59:18.9018549Z 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2022-10-26T13:59:18.9019213Z 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2022-10-26T13:59:18.9019954Z 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2022-10-26T13:59:18.9020558Z 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
2022-10-26T13:59:18.9021050Z 	at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:909)
2022-10-26T13:59:18.9021613Z 	at io.quarkus.builder.BuildContext.run(BuildContext.java:281)
2022-10-26T13:59:18.9022093Z 	at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
2022-10-26T13:59:18.9022635Z 	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
2022-10-26T13:59:18.9023235Z 	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
2022-10-26T13:59:18.9023720Z 	at java.base/java.lang.Thread.run(Thread.java:829)
2022-10-26T13:59:18.9024136Z 	at org.jboss.threads.JBossThread.run(JBossThread.java:501)
  • Debezium tests are failing because of:
2022-10-26T13:59:46.5941995Z [ERROR] testOutboxEntityMetamodelExists  Time elapsed: 0.005 s  <<< ERROR!
2022-10-26T13:59:46.5942782Z java.lang.RuntimeException: java.lang.NoSuchMethodError: 'void org.jboss.jandex.Indexer.index(java.io.InputStream)'
2022-10-26T13:59:46.5943752Z 	at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:625)
2022-10-26T13:59:46.5944897Z 	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:696)
2022-10-26T13:59:46.5948225Z 	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
2022-10-26T13:59:46.5949247Z 	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
2022-10-26T13:59:46.5950371Z 	at org.junit.jupiter.api.extension.InvocationInterceptor.interceptTestClassConstructor(InvocationInterceptor.java:73)
2022-10-26T13:59:46.5951472Z 	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
2022-10-26T13:59:46.5953362Z 	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
2022-10-26T13:59:46.5954458Z 	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
2022-10-26T13:59:46.5955682Z 	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
2022-10-26T13:59:46.5956677Z 	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
2022-10-26T13:59:46.5957742Z 	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
2022-10-26T13:59:46.5959168Z 	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:62)
2022-10-26T13:59:46.5960185Z 	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeTestClassConstructor(ClassBasedTestDescriptor.java:363)
2022-10-26T13:59:46.5961442Z 	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateTestClass(ClassBasedTestDescriptor.java:310)
2022-10-26T13:59:46.5962376Z 	at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.instantiateTestClass(ClassTestDescriptor.java:79)
2022-10-26T13:59:46.5963400Z 	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateAndPostProcessTestInstance(ClassBasedTestDescriptor.java:286)
2022-10-26T13:59:46.5964438Z 	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$4(ClassBasedTestDescriptor.java:278)
  • Operator SDK test is failing because of:
2022-10-26T14:02:12.3198751Z [ERROR] io.quarkiverse.operatorsdk.it.OperatorSDKResourceTest  Time elapsed: 22.645 s  <<< ERROR!
2022-10-26T14:02:12.3200207Z java.lang.RuntimeException: 
2022-10-26T14:02:12.3201496Z java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
2022-10-26T14:02:12.3204611Z 	[error]: Build step io.quarkiverse.operatorsdk.deployment.OperatorSDKProcessor#createConfigurationServiceAndOperator threw an exception: java.lang.NoSuchMethodError: 'java.lang.Object io.fabric8.kubernetes.client.dsl.NonNamespaceOperation.createOrReplace(java.lang.Object[])'
2022-10-26T14:02:12.3206946Z 	at io.quarkiverse.operatorsdk.runtime.CRDUtils.apply(CRDUtils.java:48)
2022-10-26T14:02:12.3271841Z 	at io.quarkiverse.operatorsdk.runtime.CRDUtils.lambda$applyCRD$0(CRDUtils.java:29)
2022-10-26T14:02:12.3272469Z 	at java.base/java.util.HashMap.forEach(HashMap.java:1337)
2022-10-26T14:02:12.3273056Z 	at io.quarkiverse.operatorsdk.runtime.CRDUtils.applyCRD(CRDUtils.java:24)
2022-10-26T14:02:12.3274053Z 	at io.quarkiverse.operatorsdk.deployment.OperatorSDKProcessor.createConfigurationServiceAndOperator(OperatorSDKProcessor.java:236)
2022-10-26T14:02:12.3275041Z 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2022-10-26T14:02:12.3275787Z 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2022-10-26T14:02:12.3276600Z 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2022-10-26T14:02:12.3277280Z 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
2022-10-26T14:02:12.3277842Z 	at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:909)
2022-10-26T14:02:12.3278405Z 	at io.quarkus.builder.BuildContext.run(BuildContext.java:281)
2022-10-26T14:02:12.3279185Z 	at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
2022-10-26T14:02:12.3279799Z 	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
2022-10-26T14:02:12.3280479Z 	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
2022-10-26T14:02:12.3281019Z 	at java.base/java.lang.Thread.run(Thread.java:829)
2022-10-26T14:02:12.3281491Z 	at org.jboss.threads.JBossThread.run(JBossThread.java:501)

So one of the issue is that we don't enforce the old Jandex version in the quarkus-bom anymore so Jandex is actually downgraded to 2.4.0.Final where it's used.

As for the Operator SDK issue, it's probably an issue with the new Kubernetes Client and we will need an upgrade.

@gsmet
Copy link
Member Author

gsmet commented Oct 26, 2022

/cc @ppalaga @jamesnetherton @zbendhiba for the Camel issues: we need Camel Quarkus to be upgraded to use the new Jandex artifact (io.smallrye:jandex). It might come automatically if you upgrade to 2.14 but probably needs a check.

/cc @Naros same for Debezium ^

/cc @metacosm for the Operator SDK upgrade.

@gsmet
Copy link
Member Author

gsmet commented Oct 26, 2022

Note that this is for your awareness so that you know that this needs a fix when Quarkus Core 2.14.0.Final core artifacts will be available.
Here it's just the CR1.

@quarkus-bot

This comment has been minimized.

@metacosm
Copy link
Contributor

For the operator SDK extension, I was waiting for this release to be able to merge the changes needed (which currently live in the next branch) as the extension wouldn't even build without this Quarkus release otherwise.

@Naros
Copy link
Contributor

Naros commented Oct 26, 2022

Hi @gsmet, I'll give a look. Should I send any extension changes in a separate PR and you'll rebase here?

@aloubyansky
Copy link
Member

I'm afraid @metacosm is right here @gsmet. It looks like either we release a shrunk platform in CR1 or we don't release the platform at all until all the members upgrade to quarkus-bom 2.14.0.CR1.

@metacosm
Copy link
Contributor

QOSDK main branch is now switched to use 2.14.0.CR1 so things should be fixed for the Java Operator SDK extension now.

@aloubyansky
Copy link
Member

Could you release a CR @metacosm to integrate into the platform (branch)?

@metacosm
Copy link
Contributor

Could you release a CR @metacosm to integrate into the platform (branch)?

I was afraid you'd say that 😉
Would a beta be good enough? I don't have much feedback on this version as it's quite literally the first time it builds out of the box so labelling it CR feels a little presumptuous…

@Naros
Copy link
Contributor

Naros commented Oct 26, 2022

Hi @aloubyansky @gsmet, I'll check with my project lead to see when we can cut a new release of Debezium. We just cut 2.0.0.Final last week and we normally operate on a 3-week cadence, but I'll see if we can potentially cut a 2.0.1.Final earlier to satisfy the Quarkus platform release. I should know something mid-day European time tomorrow.

@aloubyansky
Copy link
Member

Normally we'd release the final version in a week but given the situation we should probably give more time for the members to adjust @gsmet?

@Naros
Copy link
Contributor

Naros commented Oct 27, 2022

Hi @aloubyansky @gsmet so when I used 2.14.CR1, we got the following error in one of our tests:

[error]: Build step io.quarkus.vertx.http.deployment.VertxHttpProcessor#bodyHandler threw an exception: java.lang.IllegalAccessError: failed to access class io.netty.util.internal.logging.MessageFormatter from class io.quarkus.netty.deployment.JBossNettyLoggerFactory$JBossNettyInternalLogger (io.netty.util.internal.logging.MessageFormatter and io.quarkus.netty.deployment.JBossNettyLoggerFactory$JBossNettyInternalLogger are in unnamed module of loader io.quarkus.bootstrap.classloading.QuarkusClassLoader @7c2b6087)

Now I tested upgrading from 2.11.0.Final to 2.12.0.Final, 2.13.0.Final, and 2.13.3.Final and all of those upgrades went smoothly. Can either of you point me to what could be causing this problem?

The full stack trace is:

        at io.quarkus.netty.deployment.JBossNettyLoggerFactory$JBossNettyInternalLogger.debug(JBossNettyLoggerFactory.java:89)
        at io.netty.util.internal.PlatformDependent0.explicitNoUnsafeCause0(PlatformDependent0.java:417)
        at io.netty.util.internal.PlatformDependent0.<clinit>(PlatformDependent0.java:47)
        at io.netty.util.internal.PlatformDependent.isAndroid(PlatformDependent.java:289)
        at io.netty.util.internal.PlatformDependent.<clinit>(PlatformDependent.java:92)
        at io.netty.util.AsciiString.<init>(AsciiString.java:223)
        at io.netty.util.AsciiString.<init>(AsciiString.java:210)
        at io.netty.util.AsciiString.cached(AsciiString.java:1401)
        at io.netty.util.AsciiString.<clinit>(AsciiString.java:48)
        at io.netty.handler.codec.http.HttpMethod.<init>(HttpMethod.java:135)
        at io.netty.handler.codec.http.HttpMethod.<clinit>(HttpMethod.java:36)
        at io.vertx.core.http.HttpMethod.<clinit>(HttpMethod.java:192)
        at io.quarkus.vertx.http.runtime.VertxHttpRecorder.<clinit>(VertxHttpRecorder.java:1518)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
        at io.quarkus.deployment.proxy.ProxyFactory.newInstance(ProxyFactory.java:274)
        at io.quarkus.deployment.recording.BytecodeRecorderImpl.getRecordingProxy(BytecodeRecorderImpl.java:378)
        at io.quarkus.deployment.ExtensionLoader.lambda$loadStepsFromClass$57(ExtensionLoader.java:663)
        at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:905)
        at io.quarkus.builder.BuildContext.run(BuildContext.java:281)
        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 java.base/java.lang.Thread.run(Thread.java:833)
        at org.jboss.threads.JBossThread.run(JBossThread.java:501)

        [error]: Build step io.quarkus.vertx.http.deployment.VertxHttpProcessor#preinitializeRouter threw an exception: java.lang.NoClassDefFoundError: Could not initialize class io.quarkus.vertx.http.runtime.VertxHttpRecorder
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
        at io.quarkus.deployment.proxy.ProxyFactory.newInstance(ProxyFactory.java:274)
        at io.quarkus.deployment.recording.BytecodeRecorderImpl.getRecordingProxy(BytecodeRecorderImpl.java:378)
        at io.quarkus.deployment.ExtensionLoader.lambda$loadStepsFromClass$57(ExtensionLoader.java:663)
        at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:905)
        at io.quarkus.builder.BuildContext.run(BuildContext.java:281)
        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 java.base/java.lang.Thread.run(Thread.java:833)
        at org.jboss.threads.JBossThread.run(JBossThread.java:501)

Ironically tho, we do have io.quarkus:quarkus-vertx-http:2.14.CR1 as a dependency and I see the VertxHttpRecorder class in the jar, so I'm baffled as to why this exception gets thrown.

UPDATE

This seemed to happen due to a conflict in the io.netty version used between our Pravaga module and our parent BOM where we are strictly limited to 4.1.78.Final for Netty but it seems that Quarkus has moved to 4.1.82.Final as its baseline. We'll discuss this internally to see what we can do to address this.

@metacosm
Copy link
Contributor

metacosm commented Oct 27, 2022

Normally we'd release the final version in a week but given the situation we should probably give more time for the members to adjust @gsmet?

The problem, at least in the case of the QOSDK extension, is that there's a sort of cyclic dependency: the extension cannot be released before the appropriate Fabric8 Kubernetes Client version is available in Quarkus. Since the client updates tend to be merged relatively late in the release cycle, this makes it complicated to make any sort of progress on the QOSDK extension in the mean time but then the platform now depends on the extension being released as well so 🤷🏼… Not sure what's the best way to proceed here, actually…

@Ladicek
Copy link

Ladicek commented Oct 27, 2022

Looking at the stack traces above:

The Camel issue (org.jboss.jandex.MethodParameterInfo cannot be cast to class org.jboss.jandex.Type) can be worked around using MethodInfo.args(), that works on all Jandex versions (by accident, the method is deprecated and I didn't pay attention to it :-) ).

The Debezium issue (NoSuchMethodError: 'void org.jboss.jandex.Indexer.index(java.io.InputStream)') looks like something was compiled against Jandex 3 and then ran against Jandex 2, not sure what exactly. Maybe there's Jandex 2 sneaking in transitively and an exclusion somewhere might help?

@Ladicek
Copy link

Ladicek commented Oct 27, 2022

Also, if anyone has a Jandex-related problem, please ping me anytime (in European working hours :-) ) and I'll be glad to help.

@metacosm
Copy link
Contributor

QOSDK 5.0.0.Beta1 has been released and should be used in this PR.

@gsmet gsmet merged commit 187a29b into quarkusio:main Oct 27, 2022
@gsmet
Copy link
Member Author

gsmet commented Oct 27, 2022

I disabled the Camel Quarkus tests and Debezium tests for CR1 and will proceed with the release.

@gsmet
Copy link
Member Author

gsmet commented Oct 27, 2022

@Naros so as for DBZ, once Quarkus core 2.14.0.Final is released, we would need an updated DBZ extension based on Quarkus 2.14.0.Final and using the new Jandex artifact i.e. io.smallrye:jandex, ideally, you would let the Quarkus BOM enforce the version.

@Naros
Copy link
Contributor

Naros commented Oct 28, 2022

Understand @gsmet, that shouldn't be a problem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants