[ https://issues.apache.org/jira/browse/SLING-12315?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Robert Munteanu reassigned SLING-12315: --------------------------------------- Assignee: Elia Colombo > A race condition leads to failing resource-bundle registration during > deactivation > ---------------------------------------------------------------------------------- > > Key: SLING-12315 > URL: https://issues.apache.org/jira/browse/SLING-12315 > Project: Sling > Issue Type: Bug > Components: i18n > Reporter: Elia Colombo > Assignee: Elia Colombo > Priority: Major > > The following exception was observed: > {code:java} > [sling-default-5-ResourceBundleProvider: reload all resource bundles] > org.apache.sling.commons.scheduler.impl.QuartzScheduler Exception during job > execution of job > 'org.apache.sling.i18n.impl.JcrResourceBundleProvider$1@688bc8e' with name > 'ResourceBundleProvider: reload all resource bundles' : Cannot invoke > "org.osgi.framework.BundleContext.registerService(java.lang.Class, Object, > java.util.Dictionary)" because "this.bundleContext" is > nulljava.lang.NullPointerException: Cannot invoke > "org.osgi.framework.BundleContext.registerService(java.lang.Class, Object, > java.util.Dictionary)" because "this.bundleContext" is null at > org.apache.sling.i18n.impl.JcrResourceBundleProvider.registerResourceBundle(JcrResourceBundleProvider.java:532) > [org.apache.sling.i18n:2.6.2]{code} > During the deactivation of JcrResourceBundleProvider, ReloadBundle jobs that > are still running can try to register new resourceBundles. This fails, if > deactivate already set bundleContext to null. > Proposed solution: > * use bundleContext as cancel flag during deactivation (bundleContext=null) > * prevent new registration of resources during deactivation (necessary) > * prevent processing of new onChange events during deactivation (improvement) > * prevent scheduling of new bundle reloading jobs during deactivation > (improvement) > * execute clearCache after setting bundleContext to null, to prevent new > registrations (improvement) > BundleContext can be used as cancel flag, since conveniently it is anyway set > to null during deactivation. New registrations can be effectively avoided by > checking bundleContext==null before any registration within a synchronized > block. -- This message was sent by Atlassian Jira (v8.20.10#820010)