-
Notifications
You must be signed in to change notification settings - Fork 575
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
Allow Quasar to work with multiple classloaders. #209
Conversation
Thanks a lot Matthew and Mike! We'll look into the PR soon, which could also close #196 [edit] when merged, right? If you have the time, some basic unit test(s) with multiple classloaders would really be great. |
70f8096
to
a7f9a54
Compare
@circlespainter I've pushed a new version from Matthew that has unit tests as well. How does it look? |
It looks good but the new tests seem to pass even on |
OK, so here's what I understand having chatted to Matthew about this some more: the current code in git master actually does work with multiple classloaders, but only kind of by accident, and the errors you get back when something goes wrong are incomprehensible as a result. These patches add explicit tests and explicit tracking of classloaders, meaning that things work by design rather than by accident, and the results when something goes wrong are now better. At least, that's my high level understanding. |
I studied the PR and I think it contains important improvements but I also think that tests should identify them as precisely as possible and one important reason is that this allows to detect immediately when changes cause regressions in them. If you know for sure that the previous code got into trouble and that it was hard to figure out what was happening, I think you've also seen that trouble already: can you recall/reconstruct it and tailor the tests to it, or just tell how to reproduce it? The only one I could identify so far (and write a test tailored to it) was extra unneeded instrumentation but that one isn't really supposed to cause any trouble, rather just a potential (and tiny, unless the triggering circumstance occurs everywhere all the time, which is unlikely) slowdown. |
I have merged this PR but made some refactoring to |
Thanks! |
Hi Ron, Fabio,
This commit is the work of my colleague Matthew Nesbit. It upgrades Quasar so it can operate with multiple classloaders, which is useful if you wish to dynamically load fiber implementations from plugins, inside a sandbox etc. The unit tests all pass for me, and we have it working internally, but there may still be issues or a need to tweak things further.