Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
configadmin-1.6.0
-
MacOSX 10.8.5, Java 1.6.0_51, org.eclipse.osgi 3.9.0
Description
Brief description: If the PersistenceManager is replaced during runtime (e.g. after registering, unregistering and registering again), the ConfigurationManager always re-initializes its list of PersistenceManagers. Thus, no caching is possible and configurations are loaded unnecessarily.
Details: In the ConfigurationManager line 818 getTrackingCount() on the service tracker for PersistenceManagers is called. If the number returned is different to the number of currently known PersistenceManagers, then the list of PersistenceManagers is re-initialized. This works fine as long as the list of PersistenceManager increases. But if a PersistenceManager is unregistered, getTrackingCount() returns an increased number but the number of known PersistenceManagers is decreased. Thus, the if-condition in line 819 is always true, which causes a re-initialization of the list of known PersistenceManagers.