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

Guillaume Nodet commented on ARIES-851:
---------------------------------------

I think we should go the first way as the whole purpose of this class is to use 
EventHook and the second way just ignore all that stuff which makes this class 
useless.
I actually don't see why this class inherit the BundleTracker.
What if we just remove that parent class ?
                
> BundleTrackerCustomizer in BundleHookBundleTracker is called multiple times 
> for the same event.
> -----------------------------------------------------------------------------------------------
>
>                 Key: ARIES-851
>                 URL: https://issues.apache.org/jira/browse/ARIES-851
>             Project: Aries
>          Issue Type: Bug
>          Components: JPA, Util
>         Environment: Linux-3.0.0, Karaf-3.0.0-SNAPSHOT with Felix, openjdk-6
>            Reporter: Christoph Gritschenberger
>         Attachments: ARIES-851-stacktrace.TXT, 
> BundleHookBundleTracker-solution1.patch, 
> BundleHookBundleTracker-solution2.patch, bundletracker-test-src.zip, 
> jpa-test-bundle-src.zip, persistence-feature.xml, 
> test.bundletracker.bundle-0.1.0-SNAPSHOT.jar, 
> test.jpa.bundle-0.1.0-SNAPSHOT.jar
>
>
> Steps to reproduce
> * Compile or get a karaf-3.0.0-SNAPSHOT and unpack it
> * Install openjpa-2.2.0 (using the attached feature-file)
> * Deploy a bundle containing a persistence-unit (attached jar for example)
> get the following Exception 4 times:
> {code}
> ERROR: Bundle org.apache.aries.jpa.container [78] EventDispatcher: Error 
> during dispatch. (java.lang.IllegalStateException: Unable to create 
> persistence units for the bundle test.jpa.test.jpa.bundle/0.1.0.SNAPSHOT as 
> previous persistence units already exist.)
> java.lang.IllegalStateException: Unable to create persistence units for the 
> bundle test.jpa.test.jpa.bundle/0.1.0.SNAPSHOT as previous persistence units 
> already exist.
> {code}
> See attachment for full stacktrace
> In subsequent startups the Exception is still thrown but the stacktrace does 
> not show in the console or the log.
> Also when using equinox the Stacktrace does not appear in either the console 
> or the log ever, but it's still thrown.
> The problem is that the PersistenceBundleManager#addingBundle is called 
> multiple times for the newly installed bundle.
> The PersistenceBundleManager is passed as a BundleTrackerCustomizer to a 
> BundleHookBundleTracker.
> The BundleHookBundleTracker stores it in it's own private attribute and also 
> passes it to it's super-constructor.
> So the customizer is stored in the instance twice.
> It's called by both BundleTracker$Tracked.customizerAdding and 
> BundleHookBundleTracker$Tracked.customizerAdding.
> Both "Tracked" recognize the bundle as untracked and call the 
> addingBundle-method.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to