[ARIES-1885] End coordination in case of exception in JpaInterceptor
diff --git a/jpa-blueprint/src/main/java/org/apache/aries/jpa/blueprint/impl/JpaInterceptor.java b/jpa-blueprint/src/main/java/org/apache/aries/jpa/blueprint/impl/JpaInterceptor.java
index a6d5bf2..009908d 100644
--- a/jpa-blueprint/src/main/java/org/apache/aries/jpa/blueprint/impl/JpaInterceptor.java
+++ b/jpa-blueprint/src/main/java/org/apache/aries/jpa/blueprint/impl/JpaInterceptor.java
@@ -81,7 +81,9 @@
     public void postCallWithException(ComponentMetadata cm, Method m, Throwable ex, Object preCallToken) {
         LOG.debug("PostCallWithException for bean {}, method {}", cm.getId(), m.getName(), ex);
         if (preCallToken != null) {
-            ((Coordination)preCallToken).fail(ex);
+            Coordination coordination = (Coordination)preCallToken;
+            coordination.fail(ex);
+            safeEndCoordination(coordination);
         }
     }
 
@@ -90,7 +92,7 @@
         throws Exception {
         LOG.debug("PostCallWithReturn for bean {}, method {}", cm.getId(), m.getName());
         if (preCallToken != null) {
-            ((Coordination)preCallToken).end();
+            safeEndCoordination((Coordination)preCallToken);
         }
     }
 
@@ -110,4 +112,14 @@
             .get(PersistenceUnitTransactionType.class.getName());
         return transactionType == PersistenceUnitTransactionType.RESOURCE_LOCAL;
     }
+    
+    private void safeEndCoordination(final Coordination coordination) {
+        try {
+            if (coordination != null) {
+                coordination.end();
+            }
+        } catch (Exception e){
+            LOG.debug(e.getMessage(), e);
+        }
+    }
 }