quarkus: upgrading from quarkus 3.5.3 to 3.6.0 java.lang.IllegalArgumentException: A case block for the string value already exist

Describe the bug

after upgrading some of our project started to fail during the build with [ERROR] [error]: Build step io.quarkus.arc.deployment.ArcProcessor#generateResources threw an exception: java.lang.IllegalStateException: java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: A case block for the string value [ka18bVEx2xqfTttwWUmpZsCNNWk] already exists [ERROR] at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:858) [ERROR] at io.quarkus.builder.BuildContext.run(BuildContext.java:256) [ERROR] at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18) [ERROR] at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513) [ERROR] at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538) [ERROR] at java.base/java.lang.Thread.run(Thread.java:857) [ERROR] at org.jboss.threads.JBossThread.run(JBossThread.java:501) [ERROR] Caused by: java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: A case block for the string value [ka18bVEx2xqfTttwWUmpZsCNNWk] already exists [ERROR] at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) [ERROR] at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191) [ERROR] at io.quarkus.arc.processor.BeanProcessor.generateResources(BeanProcessor.java:382) [ERROR] at io.quarkus.arc.deployment.ArcProcessor.generateResources(ArcProcessor.java:519) [ERROR] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [ERROR] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) [ERROR] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [ERROR] at java.base/java.lang.reflect.Method.invoke(Method.java:568) [ERROR] at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849) [ERROR] … 6 more [ERROR] Caused by: java.lang.IllegalArgumentException: A case block for the string value [ka18bVEx2xqfTttwWUmpZsCNNWk] already exists [ERROR] at io.quarkus.gizmo.StringSwitchImpl.addCaseBlock(StringSwitchImpl.java:153) [ERROR] at io.quarkus.gizmo.StringSwitchImpl.caseOf(StringSwitchImpl.java:123) [ERROR] at io.quarkus.gizmo.StringSwitchImpl.caseOf(StringSwitchImpl.java:18) [ERROR] at io.quarkus.arc.processor.ContextInstancesGenerator.implementComputeIfAbsent(ContextInstancesGenerator.java:260) [ERROR] at io.quarkus.arc.processor.ContextInstancesGenerator.generate(ContextInstancesGenerator.java:85) [ERROR] at io.quarkus.arc.processor.BeanProcessor$7.call(BeanProcessor.java:374) [ERROR] at io.quarkus.arc.processor.BeanProcessor$7.call(BeanProcessor.java:369) [ERROR] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [ERROR] … 5 more

Expected behavior

the build is successful

Actual behavior

the build is broken

How to Reproduce?

No response

Output of uname -a or ver

Macos arm64

Output of java -version

openjdk version “17.0.9” 2023-10-17 IBM Semeru Runtime Open Edition 17.0.9.0 (build 17.0.9+9) Eclipse OpenJ9 VM 17.0.9.0 (build openj9-0.41.0, JRE 17 Mac OS X aarch64-64-Bit 20231017_458 (JIT enabled, AOT enabled) OpenJ9 - 461bf3c70 OMR - 5eee6ad9d JCL - 3699725139c based on jdk-17.0.9+9)

Quarkus version or git rev

3.6.0

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

Apache Maven 3.9.5 (57804ffe001d7215b5e7bcb531cf83df38f93546)

Additional information

No response

About this issue

  • Original URL
  • State: closed
  • Created 7 months ago
  • Comments: 20 (13 by maintainers)

Commits related to this issue

Most upvoted comments

I think that we should actually fail the build if multiple beans of the same identifier are found

That’s a good point. If you don’t beat me to it, I’ll submit a PR tomorrow.

then switch your project to Quarkus 999-SNAPSHOT

when doing so, make sure you also update the groupId of the BOM and the plugin from io.quarkus.platform to io.quarkus.

OK that is weird. Either we have one bean multiple times in the list of all beans, or we have multiple beans with the same ID. @psini I assume you don’t have a small reproducer?

EDIT: or even a large reproducer 😃

Ladislav is right. We’ll need a reproducer of any size for this one…