[ https://issues.apache.org/jira/browse/ARIES-851?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Christoph Gritschenberger updated ARIES-851: -------------------------------------------- Component/s: Util > Multiple IllegalStateException when deploying a new PersistenceUnit > ------------------------------------------------------------------- > > 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