Skip to content

Conversation

gsmet
Copy link
Member

@gsmet gsmet commented Sep 25, 2025

Also guard against it in the Jar generation to make sure we don't end up with duplicate entries.

Fixes #50265

@gsmet gsmet requested a review from radcortez September 25, 2025 08:35
@gsmet
Copy link
Member Author

gsmet commented Sep 25, 2025

@radcortez I would appreciate if you could prioritize the review as we need the fix in 3.28.2.

@radcortez
Copy link
Member

The check seems to be failing with other generated classes.

This comment has been minimized.

Copy link

github-actions bot commented Sep 25, 2025

🎊 PR Preview 0075acc has been successfully built and deployed to https://quarkus-pr-main-50278-preview.surge.sh/version/main/guides/

  • Images of blog posts older than 3 months are not available.
  • Newsletters older than 3 months are not available.

@gsmet
Copy link
Member Author

gsmet commented Sep 25, 2025

The check seems to be failing with other generated classes.

I'll have a look once I get a full CI report.

Copy link
Contributor

@snazy snazy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the quick fix :)

BuildProducer<AdditionalConstrainedClassBuildItem> additionalConstrainedClasses) {

processConfigClasses(combinedIndex, generatedClasses, reflectiveClasses, reflectiveMethods, configClasses,
Map<String, GeneratedClassBuildItem> generatedConfigClasses = new HashMap<>();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Not very familiar with the code-generation code, so ignore my comment, if it doesn't apply)

Should this be a LinkedHashMap for reproducibility?

Copy link
Member Author

@gsmet gsmet Sep 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The elements are sorted when necessary i.e. later when assembling the jar.

Build steps are generating classes in parallel so the list is not really ordered.

BuildProducer<AdditionalConstrainedClassBuildItem> additionalConstrainedClasses) {

processConfigMapping(combinedIndex, generatedClasses, reflectiveClasses, reflectiveMethods, configClasses,
Map<String, GeneratedClassBuildItem> generatedConfigClasses = new HashMap<>();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Not very familiar with the code-generation code, so ignore my comment, if it doesn't apply)

Should this be a LinkedHashMap for reproducibility?

byte[] classBytes = mappingMetadata.getClassBytes();
generatedClasses.produce(new GeneratedClassBuildItem(isApplicationClass, mappingMetadata.getClassName(),
classBytes));
generatedConfigClasses.put(mappingMetadata.getClassName(),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wonder if it's sufficient to check for generatedConfigClasses.put() != null instead of doing a Stream.sorted().count() in AbstractJarBuilder.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I want the full list of problematic classes, otherwise it makes fixing issues very annoying.

This comment has been minimized.

@quarkus-bot quarkus-bot bot added triage/flaky-test area/spring Issues relating to the Spring integration labels Sep 25, 2025

This comment has been minimized.

gsmet and others added 2 commits September 25, 2025 17:41
Also guard against it in the Jar generation to make sure we don't end up
with duplicate entries.

Fixes quarkusio#50265
Copy link

quarkus-bot bot commented Sep 25, 2025

Status for workflow Quarkus Documentation CI

This is the status report for running Quarkus Documentation CI on commit fc8f1fd.

✅ The latest workflow run for the pull request has completed successfully.

It should be safe to merge provided you have a look at the other checks in the summary.

Warning

There are other workflow runs running, you probably need to wait for their status before merging.

Copy link

quarkus-bot bot commented Sep 25, 2025

Status for workflow Quarkus CI

This is the status report for running Quarkus CI on commit fc8f1fd.

Failing Jobs

Status Name Step Failures Logs Raw logs Build scan
Gradle Tests - JDK 17 Build Failures Logs Raw logs 🔍
✔️ Gradle Tests - JDK 17 Windows Logs Raw logs 🚧

Full information is available in the Build summary check run.
You can consult the Develocity build scans.

Failures

⚙️ Gradle Tests - JDK 17 #

- Failing: integration-tests/gradle 

📦 integration-tests/gradle

io.quarkus.gradle.TestFixturesClientExceptionMapperTest.testBasicMultiModuleBuild line 12 - History - More details - Source on GitHub

java.lang.AssertionError: Gradle build failed with exit code 1
	at io.quarkus.gradle.QuarkusGradleWrapperTestBase.runGradleWrapper(QuarkusGradleWrapperTestBase.java:173)
	at io.quarkus.gradle.QuarkusGradleWrapperTestBase.runGradleWrapper(QuarkusGradleWrapperTestBase.java:87)
	at io.quarkus.gradle.QuarkusGradleWrapperTestBase.runGradleWrapper(QuarkusGradleWrapperTestBase.java:82)
	at io.quarkus.gradle.TestFixturesClientExceptionMapperTest.testBasicMultiModuleBuild(TestFixturesClientExceptionMapperTest.java:12)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

📦 integration-tests/gradle/target/classes/test-fixtures-client-exception-mapper

org.example.MyRemoteServiceTest.testGetExtensionsById() - History - More details - Source on GitHub

jakarta.ws.rs.ProcessingException: io.netty.channel.ConnectTimeoutException: connection timed out after 15000 ms: stage.code.quarkus.io/44.199.152.74:443
	at org.jboss.resteasy.reactive.client.handlers.ClientSendRequestHandler$2.accept(ClientSendRequestHandler.java:235)
	at org.jboss.resteasy.reactive.client.handlers.ClientSendRequestHandler$2.accept(ClientSendRequestHandler.java:227)
	at io.smallrye.context.impl.wrappers.SlowContextualConsumer.accept(SlowContextualConsumer.java:21)
	at io.smallrye.mutiny.helpers.UniCallbackSubscriber.onFailure(UniCallbackSubscriber.java:62)
	at io.smallrye.mutiny.operators.uni.UniOperatorProcessor.onFailure(UniOperatorProcessor.java:55)
	at org.jboss.resteasy.reactive.client.AsyncResultUni.lambda$subscribe$1(AsyncResultUni.java:37)
	at io.vertx.core.impl.future.FutureImpl$4.onFailure(FutureImpl.java:188)

Flaky tests - Develocity

⚙️ JVM Tests - JDK 17

📦 test-framework/jacoco/runtime

io.quarkus.jacoco.runtime.DataFileWatchTest.waitForDataFileThatNeverAppears - History

  • Expecting value to be false but was true - org.opentest4j.AssertionFailedError
org.opentest4j.AssertionFailedError: 

Expecting value to be false but was true
	at io.quarkus.jacoco.runtime.DataFileWatchTest.waitForDataFileThatNeverAppears(DataFileWatchTest.java:208)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

⚙️ JVM Tests - JDK 21

📦 extensions/smallrye-openapi/deployment

io.quarkus.smallrye.openapi.test.vertx.OpenApiHttpRootPathCorsTestCase.testCorsFilterProperties - History

  • 1 expectation failed. Expected status code <200> but was <500>. - java.lang.AssertionError
java.lang.AssertionError: 
1 expectation failed.
Expected status code <200> but was <500>.

	at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
	at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:73)

⚙️ Maven Tests - JDK 17 Windows

📦 integration-tests/devmode

io.quarkus.test.devui.DevUIGrpcSmokeTest.testTestService - History

  • Too many recursions, message not returned for id [123205416] - java.lang.RuntimeException
java.lang.RuntimeException: Too many recursions, message not returned for id [123205416]
	at io.quarkus.devui.tests.DevUIJsonRPCTest.objectResultFromJsonRPC(DevUIJsonRPCTest.java:175)
	at io.quarkus.devui.tests.DevUIJsonRPCTest.objectResultFromJsonRPC(DevUIJsonRPCTest.java:178)
	at io.quarkus.devui.tests.DevUIJsonRPCTest.objectResultFromJsonRPC(DevUIJsonRPCTest.java:178)
	at io.quarkus.devui.tests.DevUIJsonRPCTest.objectResultFromJsonRPC(DevUIJsonRPCTest.java:178)
	at io.quarkus.devui.tests.DevUIJsonRPCTest.objectResultFromJsonRPC(DevUIJsonRPCTest.java:178)
	at io.quarkus.devui.tests.DevUIJsonRPCTest.objectResultFromJsonRPC(DevUIJsonRPCTest.java:178)
	at io.quarkus.devui.tests.DevUIJsonRPCTest.objectResultFromJsonRPC(DevUIJsonRPCTest.java:178)

⚙️ Gradle Tests - JDK 17 Windows

📦 integration-tests/gradle

io.quarkus.gradle.TestFixturesClientExceptionMapperTest.testBasicMultiModuleBuild - History

  • Gradle build failed with exit code 1 - java.lang.AssertionError
java.lang.AssertionError: Gradle build failed with exit code 1
	at io.quarkus.gradle.QuarkusGradleWrapperTestBase.runGradleWrapper(QuarkusGradleWrapperTestBase.java:173)
	at io.quarkus.gradle.QuarkusGradleWrapperTestBase.runGradleWrapper(QuarkusGradleWrapperTestBase.java:87)
	at io.quarkus.gradle.QuarkusGradleWrapperTestBase.runGradleWrapper(QuarkusGradleWrapperTestBase.java:82)
	at io.quarkus.gradle.TestFixturesClientExceptionMapperTest.testBasicMultiModuleBuild(TestFixturesClientExceptionMapperTest.java:12)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

@gsmet gsmet merged commit c8c1f36 into quarkusio:main Sep 26, 2025
59 of 60 checks passed
@quarkus-bot quarkus-bot bot added this to the 3.29 - main milestone Sep 26, 2025
@gsmet gsmet modified the milestones: 3.29 - main, 3.28.2 Sep 29, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/arc Issue related to ARC (dependency injection) area/config area/core area/spring Issues relating to the Spring integration kind/bugfix triage/flaky-test
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3.28.1: java.util.zip.ZipException: duplicate entry in Quarkus generated jar(s)
3 participants