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 2019/07/09 17:21:52 UTC

svn commit: r1862827 - in /uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima: analysis_engine/asb/impl/FlowContainer.java cas/impl/CASImpl.java impl/Util.java

Author: schor
Date: Tue Jul  9 17:21:51 2019
New Revision: 1862827

URL: http://svn.apache.org/viewvc?rev=1862827&view=rev
Log:
[UIMA-6057] add comments

Modified:
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/FlowContainer.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/Util.java

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/FlowContainer.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/FlowContainer.java?rev=1862827&r1=1862826&r2=1862827&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/FlowContainer.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/FlowContainer.java Tue Jul  9 17:21:51 2019
@@ -109,6 +109,7 @@ public class FlowContainer {
       mFlow.aborted();
     } finally {
       mCAS.restoreClassLoaderUnlockCas();
+      // https://issues.apache.org/jira/browse/UIMA-6057
       mCAS.restoreClassLoaderUnlockCas();  // this one unlocks the aborted CAS itself
     }
   }
@@ -119,6 +120,7 @@ public class FlowContainer {
       return mFlow.continueOnFailure(failedAeKey, failure);
     } finally {
       mCAS.restoreClassLoaderUnlockCas();
+      // https://issues.apache.org/jira/browse/UIMA-6057
       mCAS.restoreClassLoaderUnlockCas();  // this one unlocks the failed CAS itself
     }
   }

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java?rev=1862827&r1=1862826&r2=1862827&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java Tue Jul  9 17:21:51 2019
@@ -236,6 +236,11 @@ public class CASImpl extends AbstractCas
   // Static classes representing shared instance data
   // - shared data is computed once for all views
 
+  /**
+   * Instances are put into a Stack, to remember previous state to switch back to,
+   * when switching class loaders and locking the CAS
+   * https://issues.apache.org/jira/browse/UIMA-6057
+   */
   static class SwitchControl {
     final boolean wasLocked;
     boolean wasSwitched = false;
@@ -381,6 +386,11 @@ public class CASImpl extends AbstractCas
     
     private final EnumSet<CasState> casState = EnumSet.noneOf(CasState.class); 
     
+    /**
+     * a stack used to remember and restore previous state of cas lock and class loaders
+     * when switching classloaders and locking the cas
+     * https://issues.apache.org/jira/browse/UIMA-6057
+     */
     private final Deque<SwitchControl> switchControl = new ArrayDeque<>();
     
     private SharedViewData(boolean useFSCache, Heap heap, CASImpl baseCAS, CASMetadata casMetadata) {
@@ -399,6 +409,7 @@ public class CASImpl extends AbstractCas
   // package protected to let other things share this info
   final SharedViewData svd; // shared view data
   
+  // public only for cross package access
   public boolean isCasLocked() {
     return ! svd.flushEnabled;
   }
@@ -1213,7 +1224,7 @@ public void reset() {
       this.svd.traceFScreationSb.setLength(0);
     }
     this.svd.componentInfo = null; // https://issues.apache.org/jira/browse/UIMA-5097
-    this.svd.switchControl.clear();
+    this.svd.switchControl.clear();  // https://issues.apache.org/jira/browse/UIMA-6057
   }
 
   /**
@@ -4474,6 +4485,7 @@ public void setJCasClassLoader(ClassLoad
     if (null == this.svd.previousJCasClassLoader) {
       return;
     }
+    // https://issues.apache.org/jira/browse/UIMA-6057
     if ((empty_switchControl || switchControl.wasSwitched) && this.svd.previousJCasClassLoader != this.svd.jcasClassLoader) {
       // System.out.println("Switching back to previous class loader");
       this.svd.jcasClassLoader = this.svd.previousJCasClassLoader;

Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/Util.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/Util.java?rev=1862827&r1=1862826&r2=1862827&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/Util.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/Util.java Tue Jul  9 17:21:51 2019
@@ -85,6 +85,7 @@ public class Util {
     // This cas will be unlocked and its class loader restored when the
     //   next() method returns it
     // Insure the same view is passed for switching/restoring  https://issues.apache.org/jira/browse/UIMA-2211
+    // https://issues.apache.org/jira/browse/UIMA-6057
     boolean wasLocked = ci.isCasLocked();
     ci.switchClassLoader(resourceManager.getExtensionClassLoader(), wasLocked);    
     return r;