[ 
https://issues.apache.org/jira/browse/ARIES-851?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Christoph Gritschenberger updated ARIES-851:
--------------------------------------------

    Attachment:     (was: bundletracker-test.zip)
    
> 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, jpa-test-bundle-src.zip, 
> persistence-feature.xml, 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