You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2018/06/27 19:22:35 UTC

svn commit: r1834532 - /uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java

Author: schor
Date: Wed Jun 27 19:22:35 2018
New Revision: 1834532

URL: http://svn.apache.org/viewvc?rev=1834532&view=rev
Log:
[UIMA-5801]

Modified:
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java?rev=1834532&r1=1834531&r2=1834532&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java Wed Jun 27 19:22:35 2018
@@ -42,6 +42,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Set;
 import java.util.Spliterator;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -97,6 +98,7 @@ import org.apache.uima.internal.util.Int
 import org.apache.uima.internal.util.Misc;
 import org.apache.uima.internal.util.PositiveIntSet;
 import org.apache.uima.internal.util.PositiveIntSet_impl;
+import org.apache.uima.internal.util.UIMAClassLoader;
 import org.apache.uima.jcas.JCas;
 import org.apache.uima.jcas.cas.AnnotationBase;
 import org.apache.uima.jcas.cas.BooleanArray;
@@ -575,8 +577,15 @@ public class CASImpl extends AbstractCas
       // pear caches
       id2tramp = null;
       id2base = null;
-      for (JCasHashMap m : cl2id2tramp.values()) {
-        m.clear();
+      for (Iterator<Entry<ClassLoader, JCasHashMap>> it = cl2id2tramp.entrySet().iterator(); it.hasNext();) {
+        Entry<ClassLoader, JCasHashMap> e = it.next();
+        ClassLoader cl = e.getKey();
+        e.getValue().clear();
+        if (cl instanceof UIMAClassLoader) {  // https://issues.apache.org/jira/browse/UIMA-5801
+          if (((UIMAClassLoader)cl).isClosed()) {
+            it.remove();
+          }
+        }
       }
 
       // index corruption avoidance