Christoph Gritschenberger created ARIES-851:
-----------------------------------------------

             Summary: 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
         Environment: Linux-3.0.0, Karaf-3.0.0-SNAPSHOT with Felix, openjdk-6
            Reporter: Christoph Gritschenberger
         Attachments: 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