Skip to content

Conversation

@gsmet
Copy link
Member

@gsmet gsmet commented Sep 23, 2025

It will call URL#toExternalForm() for each class, which will generate again and again the same string pointing to the jar files.

By introducing a specific URLStreamHandler, we are able to avoid calling URL#toExternalForm() and use a cached version of it for each JarResource.

While not making a tremendous difference, it is an easy way to reduce our allocations at startup.

Screenshot From 2025-09-23 15-09-57

@gsmet
Copy link
Member Author

gsmet commented Sep 23, 2025

@dmlloyd interested in your feedback on this one.

@quarkus-bot quarkus-bot bot added the area/devtools Issues/PR related to maven, gradle, platform and cli tooling/plugins label Sep 23, 2025
@gsmet gsmet force-pushed the avoid-toexternalform branch from bdef1a2 to d80c54e Compare September 24, 2025 08:06
Copy link
Member

@dmlloyd dmlloyd left a comment

Choose a reason for hiding this comment

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

Looks good to me!

@quarkus-bot

This comment has been minimized.

@quarkus-bot

This comment has been minimized.

@gsmet gsmet force-pushed the avoid-toexternalform branch 2 times, most recently from a18fb33 to bf4a567 Compare September 27, 2025 22:36
@quarkus-bot

This comment has been minimized.

It will call URL#toExternalForm() for each class, which will generate
again and again the same string pointing to the jar files.

By introducing a specific URLStreamHandler, we are able to avoid calling
URL#toExternalForm() and use a cached version of it for each
JarResource.

While not making a tremendous difference, it is an easy way to reduce
our allocations at startup.
@gsmet gsmet force-pushed the avoid-toexternalform branch from bf4a567 to 9882fdc Compare September 29, 2025 08:42
@quarkus-bot
Copy link

quarkus-bot bot commented Sep 29, 2025

Status for workflow Quarkus CI

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

✅ 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.

You can consult the Develocity build scans.


Flaky tests - Develocity

⚙️ JVM Tests - JDK 17

📦 extensions/smallrye-reactive-messaging/deployment

io.quarkus.smallrye.reactivemessaging.hotreload.ConnectorChangeTest.testUpdatingConnector - History

  • Expecting actual: ["-6","-7","-8","-10","-11","-12","-13","-14"] to start with: ["-6", "-7", "-8", "-9"] - java.lang.AssertionError
java.lang.AssertionError: 

Expecting actual:
  ["-6","-7","-8","-10","-11","-12","-13","-14"]
to start with:
  ["-6", "-7", "-8", "-9"]

	at io.quarkus.smallrye.reactivemessaging.hotreload.ConnectorChangeTest.testUpdatingConnector(ConnectorChangeTest.java:41)

⚙️ 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)

📦 test-framework/jacoco/runtime

io.quarkus.jacoco.runtime.DataFileWatchTest.waitForPreexistingDataFileThatNeverChanges - 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.waitForPreexistingDataFileThatNeverChanges(DataFileWatchTest.java:241)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
  • 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.waitForPreexistingDataFileThatNeverChanges(DataFileWatchTest.java:241)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)

⚙️ Gradle Tests - JDK 17 Windows

📦 integration-tests/gradle

io.quarkus.gradle.devmode.IncludedKotlinKMPBuildDevModeTest.main - History

  • Condition with Lambda expression in io.quarkus.test.devmode.util.DevModeClient was not fulfilled within 1 minutes 30 seconds. - org.awaitility.core.ConditionTimeoutException
org.awaitility.core.ConditionTimeoutException: Condition with Lambda expression in io.quarkus.test.devmode.util.DevModeClient was not fulfilled within 1 minutes  30 seconds.
	at org.awaitility.core.ConditionAwaiter.await(ConditionAwaiter.java:167)
	at org.awaitility.core.CallableCondition.await(CallableCondition.java:78)
	at org.awaitility.core.CallableCondition.await(CallableCondition.java:26)
	at org.awaitility.core.ConditionFactory.until(ConditionFactory.java:1160)
	at org.awaitility.core.ConditionFactory.until(ConditionFactory.java:1129)
	at io.quarkus.test.devmode.util.DevModeClient.getHttpResponse(DevModeClient.java:164)
	at io.quarkus.gradle.devmode.QuarkusDevGradleTestBase.getHttpResponse(QuarkusDevGradleTestBase.java:165)

@gsmet gsmet merged commit 5e929ef into quarkusio:main Sep 29, 2025
57 checks passed
@quarkus-bot quarkus-bot bot added this to the 3.29 - main milestone Sep 29, 2025
@dmlloyd
Copy link
Member

dmlloyd commented Sep 29, 2025

What ended up being the issue with the tests? I didn't notice what changed in the PR, but maybe a missing method on the stream handler?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/devtools Issues/PR related to maven, gradle, platform and cli tooling/plugins area/maven triage/flaky-test

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants