[ https://issues.apache.org/jira/browse/FELIX-3000?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Richard S. Hall resolved FELIX-3000. ------------------------------------ Resolution: Fixed Assignee: Richard S. Hall I committed a patch to fix this. I originally tried to remove the callback object completely, but decided that the result was too ugly. Instead, I've just made it so that ServiceRegistry.registerService() no longer fires a service event and the caller is expected to do so. This is still ugly, but less so BTW, I think invalidate() does need to be in the synchronized block, because someone could get the service before it was invalidated. > Move sending service registered event out of bundle lock > -------------------------------------------------------- > > Key: FELIX-3000 > URL: https://issues.apache.org/jira/browse/FELIX-3000 > Project: Felix > Issue Type: Improvement > Components: Framework > Affects Versions: framework-3.0.7, framework-3.2.2 > Reporter: Felix Meschberger > Assignee: Richard S. Hall > Fix For: framework-4.0.0 > > Attachments: FELIX-3000-stacktrace.txt, FELIX-3000.patch > > > We have a strange situation on a Framework 3.0.7 based system here which is > not reproducible on all platforms. > We can track down a system freeze/deadlock to three threads all contending > for bundle locks and the global lock. See attached FELIX-3000-stacktrace.txt > for the stack trace. > Looking at the Framework source, particularly acquireBundleLock and > acquireGlobalLock I cannot see where this "deadlock" can occur. > The only hint I have is a note in the Felix.registerService: > > // TODO: CONCURRENCY - Reconsider firing event here, outside of the > > // bundle lock. > I wonder whether this situation can be fixed with moving the service > registration event ? > Looking at the code it seems to have not been changed. Thus I report this > against 3.0.7 where we saw this and 3.2.2 being the latest release. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira