-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
Quarkus needs the ability to change the ClassLoader #4025
Labels
Milestone
Comments
I am assuming this is the class loader hold by the Context that is used to be set as TCCL ? |
Yes, although ideally this will apply everywhere so that the original CL does not leak. |
would the ability to disable the TCCL with a flag in VertxOptions work (instead of using a system property) ? |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Describe the feature
Quarkus Development mode works by dropping and re-creating a class loader every time code is changed. As this is triggered by a HTTP request vert.x is not restarted each time, so the HTTP requests work as expected.
This is causing issues such as quarkusio/quarkus#18299 where vert.x is hanging onto the original ClassLoader that was passed in at creation time. With Vert.x 3 we worked around this by manually scheduling a task on each IO thread that updated the Thread context ClassLoader, however this no longer works in Vert.x 4, as Vert.x is resetting the CL each time.
For now we are likely going to work around it via
vertx.disableTCCL=true
and filtering out the resulting warnings.In terms of implementation I was thinking maybe instead of Vert.x taking a ClassLoader it could take a Supplier, and this could be use to obtain the correct TCCL each time.
Contribution
I can implement it if there is consensus on what it should look like.
The text was updated successfully, but these errors were encountered: