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

Provide infrastructure to debug QuarkusClassLoader lifecyle #41692

Merged
merged 1 commit into from
Jul 5, 2024

Conversation

gsmet
Copy link
Member

@gsmet gsmet commented Jul 4, 2024

You can log the constructor and close() calls by enabling debug logging for category
io.quarkus.bootstrap.classloading.QuarkusClassLoader.lifecycle.

You can log late accesses to closed class loaders by passing -Dquarkus-log-access-to-closed-class-loaders to your build command.

@quarkus-bot quarkus-bot bot added the area/devtools Issues/PR related to maven, gradle, platform and cli tooling/plugins label Jul 4, 2024
@gsmet
Copy link
Member Author

gsmet commented Jul 4, 2024

@aloubyansky I isolated the logging infra in this PR so that we can get it in early as it's useful to debug and improve the situation (see work in #41607).

I went for a short as it's a bit more readable than a byte and tried to choose status that would be understandable easily (rather than going for more cryptic bytes).

@gsmet gsmet requested a review from aloubyansky July 4, 2024 13:26
@@ -131,14 +139,15 @@ public static boolean isResourcePresentAtRuntime(String resourcePath) {
PLATFORM_CLASS_LOADER = cl;
}

private boolean closed;
private volatile short status;
Copy link
Contributor

Choose a reason for hiding this comment

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

Same here:

Suggested change
private volatile short status;
private volatile byte status;

You can log the constructor and close() calls by enabling debug logging
for category
`io.quarkus.bootstrap.classloading.QuarkusClassLoader.lifecycle`.

You can log late accesses to closed class loaders by passing
`-Dquarkus-log-access-to-closed-class-loaders` to your build command.
@gsmet gsmet force-pushed the diag-cl-closed branch from 65c0c82 to 6272732 Compare July 4, 2024 16:25
@gsmet gsmet added the triage/waiting-for-ci Ready to merge when CI successfully finishes label Jul 4, 2024
Copy link

quarkus-bot bot commented Jul 4, 2024

Status for workflow Quarkus CI

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

Failing Jobs

Status Name Step Failures Logs Raw logs Build scan
✔️ JVM Tests - JDK 17 Logs Raw logs 🔍
✔️ JVM Tests - JDK 21 Logs Raw logs 🔍
JVM Tests - JDK 17 Windows Build Failures Logs Raw logs 🔍
MicroProfile TCKs Tests Verify Failures Logs Raw logs 🔍

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

Failures

⚙️ JVM Tests - JDK 17 Windows #

- Failing: integration-tests/rest-client 

📦 integration-tests/rest-client

Failed to execute goal uk.co.automatictester:truststore-maven-plugin:3.0.0:generate-truststore (self-signed-truststore) on project quarkus-integration-test-rest-client: Execution self-signed-truststore of goal uk.co.automatictester:truststore-maven-plugin:3.0.0:generate-truststore failed: java.net.ConnectException: Connection timed out: connect


⚙️ MicroProfile TCKs Tests #

- Failing: tcks/microprofile-opentelemetry 

📦 tcks/microprofile-opentelemetry

org.eclipse.microprofile.telemetry.tracing.tck.async.MpRestClientAsyncTest.testIntegrationWithMpRestClient - History - More details - Source on GitHub

java.util.concurrent.RejectedExecutionException: event executor terminated
	at io.netty.util.concurrent.SingleThreadEventExecutor.reject(SingleThreadEventExecutor.java:931)
	at io.netty.util.concurrent.SingleThreadEventExecutor.offerTask(SingleThreadEventExecutor.java:350)
	at io.netty.util.concurrent.SingleThreadEventExecutor.addTask(SingleThreadEventExecutor.java:343)
	at io.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:833)
	at io.netty.util.concurrent.SingleThreadEventExecutor.execute0(SingleThreadEventExecutor.java:824)
	at io.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:814)
	at io.vertx.core.impl.EventLoopExecutor.execute(EventLoopExecutor.java:35)

Flaky tests - Develocity

⚙️ JVM Tests - JDK 21

📦 extensions/amazon-lambda/deployment

io.quarkus.amazon.lambda.deployment.testing.InputCollectionOutputCollectionLambdaTest.requestHandler_InputCollectionInputPerson_OutputCollectionOutputPerson - History

  • 1 expectation failed. JSON path doesn't match. Expected: a collection containing map containing ["outputname"->"Chris"] Actual: <[{outputname=Fred}]> - java.lang.AssertionError
java.lang.AssertionError: 
1 expectation failed.
JSON path  doesn't match.
Expected: a collection containing map containing ["outputname"->"Chris"]
  Actual: <[{outputname=Fred}]>

	at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)

⚙️ JVM Tests - JDK 17 Windows

📦 extensions/amazon-lambda/deployment

io.quarkus.amazon.lambda.deployment.testing.InputCollectionOutputCollectionLambdaTest.requestHandler_InputCollectionInputPerson_OutputCollectionOutputPerson - History

  • 1 expectation failed. JSON path doesn't match. Expected: a collection containing map containing ["outputname"->"Chris"] Actual: <[{outputname=Fred}]> - java.lang.AssertionError
java.lang.AssertionError: 
1 expectation failed.
JSON path  doesn't match.
Expected: a collection containing map containing ["outputname"->"Chris"]
  Actual: <[{outputname=Fred}]>

	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)

@gsmet gsmet merged commit 1c1b7ef into quarkusio:main Jul 5, 2024
51 of 53 checks passed
@quarkus-bot quarkus-bot bot added this to the 3.13 - main milestone Jul 5, 2024
@quarkus-bot quarkus-bot bot removed the triage/waiting-for-ci Ready to merge when CI successfully finishes label Jul 5, 2024
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 triage/flaky-test
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants