You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by cs...@apache.org on 2014/11/03 18:17:19 UTC
svn commit: r1636398 -
/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/PersistenceBundleManager.java
Author: cschneider
Date: Mon Nov 3 17:17:18 2014
New Revision: 1636398
URL: http://svn.apache.org/r1636398
Log:
ARIES-1162 Destroy persistence unit on unresolved event
Modified:
aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/PersistenceBundleManager.java
Modified: aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/PersistenceBundleManager.java
URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/PersistenceBundleManager.java?rev=1636398&r1=1636397&r2=1636398&view=diff
==============================================================================
--- aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/PersistenceBundleManager.java (original)
+++ aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/PersistenceBundleManager.java Mon Nov 3 17:17:18 2014
@@ -284,11 +284,16 @@ public class PersistenceBundleManager im
EntityManagerFactoryManager mgr = (EntityManagerFactoryManager) object;
//If the bundle was updated we need to destroy it and re-initialize
//the EntityManagerFactoryManager
- if(event != null && event.getType() == BundleEvent.UPDATED) {
+ //If the bundle becomes unresolved we need to destroy persistenceUnits, since they
+ //keep a reference to bundle classloader which has wiring m_isDisposed set to true
+ //this occurs when Karaf BundleWatcher is used.
+ if(event != null && (event.getType() == BundleEvent.UPDATED || event.getType() == BundleEvent.UNRESOLVED)) {
mgr.destroy();
persistenceUnitFactory.destroyPersistenceBundle(ctx, bundle);
- //Don't add to the managersAwaitingProviders, the setupManager will do it
- setupManager(bundle, mgr, true);
+ if (event.getType() == BundleEvent.UPDATED) {
+ //Don't add to the managersAwaitingProviders, the setupManager will do it
+ setupManager(bundle, mgr, true);
+ }
} else {
try {
boolean reassign;