require should be made either threadsafe or guaranteed to run the discovered file exactly once ----------------------------------------------------------------------------------------------
Key: JRUBY-3078 URL: http://jira.codehaus.org/browse/JRUBY-3078 Project: JRuby Issue Type: Bug Components: Core Classes/Modules Reporter: Charles Oliver Nutter Fix For: JRuby 1.1.6 In examining JRUBY-3057, we discovered that requires are not really as thread-safe as they could be. They may cause two threads to execute the same file at the same time, which is both a risk for concurrency and a violation of require's implicit "execute exactly once" guarantee. A simple global synchronization of require could lead two threads requiring the same files in different orders to deadlock, so a full-on synchronization is not likely to be possible. We must explore that possibility. If it turns out that a general synchronization of require is not possible, we must fall back on our alternative option: at least guarantee that require does not ever execute a file that has been or is currently being required by another thread. This is a much smaller goal, since it largely only requires synchronizing on the list of loaded features and guaranteeing that features in that list have at least "started" to load, if not finished (the latter guarantee being impossible without a global synchronization). JRUBY-3057 was fixed by avoiding concurrent requires due to time constraints and the potential for an overreaching require synchronization to cause catastrophic failures under heavily concurrent load. We should look into the described require thread-safety options for a future release. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email