[ 
https://issues.apache.org/jira/browse/FELIX-4238?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13777487#comment-13777487
 ] 

Felix Meschberger commented on FELIX-4238:
------------------------------------------

Woot ! You find a nice one. Thank you very much.

The fix is as simple as:

Index: ConfigurationManager.java
===================================================================
--- ConfigurationManager.java   (Revision 1524907)
+++ ConfigurationManager.java   (Arbeitskopie)
@@ -848,7 +848,7 @@
                 pm = ( PersistenceManager[] ) pmList.toArray( new 
PersistenceManager[pmList.size()] );
             }
 
-            pmtCount = pm.length;
+            pmtCount = currentPmtCount;
             persistenceManagers = pm;
         }
 

                
> Unnecessary re-initialization of PersistenceManagers in configadmin
> -------------------------------------------------------------------
>
>                 Key: FELIX-4238
>                 URL: https://issues.apache.org/jira/browse/FELIX-4238
>             Project: Felix
>          Issue Type: Bug
>          Components: Configuration Admin
>    Affects Versions: configadmin-1.6.0
>         Environment: MacOSX 10.8.5, Java 1.6.0_51, org.eclipse.osgi 3.9.0
>            Reporter: Matthias
>            Assignee: Felix Meschberger
>            Priority: Minor
>              Labels: patch
>   Original Estimate: 0.5h
>  Remaining Estimate: 0.5h
>
> 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.

--
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

Reply via email to