[ http://issues.apache.org/jira/browse/SANDBOX-42?page=all ]
Henri Yandell updated SANDBOX-42:
---------------------------------
Component: JCI
> JCI: random race conditions
> ---------------------------
>
> Key: SANDBOX-42
> URL: http://issues.apache.org/jira/browse/SANDBOX-42
> Project: Commons Sandbox
> Type: Bug
> Components: JCI
> Environment: Operating System: other
> Platform: Other
> Reporter: Patrick Lightbody
>
> I'm using Jetty and configuring a custom classloader to allow for rapid
> application development. I have a File[] that is ordered in the correct
> dependency order. The code to construct the ClassLoader for Jetty is:
> ClassLoader parent =
> Thread.currentThread().getContextClassLoader();
> for (int i = 0; i < files.length; i++) {
> File file = files[i];
> parent = new CompilingClassLoader(parent, file, new
> EclipseJavaCompiler());
> Field famField = parent.getClass().getDeclaredField("fam");
> famField.setAccessible(true);
> FilesystemAlterationMonitor fam =
> (FilesystemAlterationMonitor)
> famField.get(parent);
> fam.doRun();
> Thread.sleep(500);
> }
> URLClassLoader url = new MyURLClassLoader(urls, parent);
> Note the fam hack -- that has been reported in another issue. The
> MyURLClassLoader is required for two reasons:
> 1) Jetty (actually Jasper) requires a URLClassLoader
> 2) The MyURLClassLoader loads classes in the standard web-app method, rather
> than the standard Java way (parent last, not first)
> Generally, this stuff works great. But about 30% of the time, some classes
> don't
> get loaded by the CompilingClassLoader and manage to get loaded by the
> original
> parent classloader (context classloader). This causes serious problems
> (ClassCastExceptions, etc).
> It is clear there are some funky race conditions going on wit the way JCI
> kicks
> off threads to do work. I think generally the code is fine, but the "first
> pass"
> that the threads do need to be done synchrounously, rather than in the
> background. I attempted to do this with "fam.doRun()", but I guess I didn't
> catch everything.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]