[ https://issues.apache.org/jira/browse/FELIX-3273?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Richard S. Hall resolved FELIX-3273. ------------------------------------ Resolution: Fixed Assignee: Richard S. Hall There was one place we were accessing the headers cache without the lock, so I fixed that. Additionally, I could see that there was some issue around clearing the cache on uninstalled and trying to populate it with the default locale which always led to a check-then-act scenario. To avoid this, I decided against caching the final default locale in the header cache and instead put it in a separate variable. That way the caching of the default locale can be done atomically when uninstalling the bundle. Hopefully, that fixes this issue. Please close if satisfied, thanks. > Possible exception when accessing headers > ----------------------------------------- > > Key: FELIX-3273 > URL: https://issues.apache.org/jira/browse/FELIX-3273 > Project: Felix > Issue Type: Bug > Affects Versions: framework-3.0.9 > Reporter: Guillaume Nodet > Assignee: Richard S. Hall > Fix For: framework-4.2.0 > > > {code} > ERROR: Bundle org.ops4j.pax.logging.pax-logging-service [3] EventDispatcher: > Error during dispatch. (java.util.NoSuchElementException) > java.util.NoSuchElementException > at java.util.HashMap$HashIterator.nextEntry(HashMap.java:796) > at java.util.HashMap$ValueIterator.next(HashMap.java:822) > at > org.apache.felix.framework.BundleImpl.getCurrentLocalizedHeader(BundleImpl.java:334) > at org.apache.felix.framework.Felix.getBundleHeaders(Felix.java:1428) > at org.apache.felix.framework.BundleImpl.getHeaders(BundleImpl.java:311) > at org.apache.felix.framework.BundleImpl.getHeaders(BundleImpl.java:293) > at > org.ops4j.pax.logging.service.internal.PaxLoggerImpl.setDelegateContext(PaxLoggerImpl.java:101) > at > org.ops4j.pax.logging.service.internal.PaxLoggerImpl.debug(PaxLoggerImpl.java:131) > at > org.ops4j.pax.logging.service.internal.PaxLoggingServiceImpl.log(PaxLoggingServiceImpl.java:149) > at > org.ops4j.pax.logging.service.internal.PaxLoggingServiceImpl.log(PaxLoggingServiceImpl.java:115) > at > org.ops4j.pax.logging.service.internal.FrameworkHandler.bundleChanged(FrameworkHandler.java:93) > at > org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:807) > at > org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:729) > at > org.apache.felix.framework.util.EventDispatcher.run(EventDispatcher.java:949) > at > org.apache.felix.framework.util.EventDispatcher.access$000(EventDispatcher.java:54) > at > org.apache.felix.framework.util.EventDispatcher$1.run(EventDispatcher.java:106) > at java.lang.Thread.run(Thread.java:680) > {code} > The problem happened on 3.0.9 but looking at the getLocalizedHeaders method, > nothing has changed so the bug should still be valid for 4.0.x > I suppose the problem is in the BundleImpl#uninstall method which may clear > the cached headers without populating with the default. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira