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;