[
https://issues.apache.org/jira/browse/ARIES-851?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Christoph Gritschenberger updated ARIES-851:
--------------------------------------------
Attachment: ARIES-851-regression-fix.patch
> 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
> Assignee: Guillaume Nodet
> Fix For: 1.0
>
> Attachments: ARIES-851-regression-fix.patch,
> 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