You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by ch...@apache.org on 2013/04/17 22:43:12 UTC
svn commit: r1469067 - in
/uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm:
ServiceHandler.java ServiceSet.java
Author: challngr
Date: Wed Apr 17 20:43:12 2013
New Revision: 1469067
URL: http://svn.apache.org/r1469067
Log:
UIMA-2818
Check autostart flag when reference starting and linger-stopping services as it
may have been set while nobody was looking and we need to avoid linger-stopping
the service if it is set.
Modified:
uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceHandler.java
uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceHandler.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceHandler.java?rev=1469067&r1=1469066&r2=1469067&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceHandler.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceHandler.java Wed Apr 17 20:43:12 2013
@@ -281,7 +281,9 @@ public class ServiceHandler
// Registered but not alive, well, we can fix that!
int ninstances = sset.getNInstances();
logger.debug(methodName, sset.getId(), "Reference-starting registered service, instances =", ninstances);
- sset.setReferencedStart(true);
+ if ( ! sset.isAutostart() ) { // must avoid races ith autostart for referenced start
+ sset.setReferencedStart(true);
+ }
for ( int i = 0; i < ninstances; i++ ) {
if ( ! sset.start() ) {
s.addMessage(dep, "Can't start independent service.");
@@ -378,8 +380,12 @@ public class ServiceHandler
serviceStateHandler.removeService(dep);
}
if ( sset.isRegistered() && sset.isReferencedStart() ) {
- logger.debug(methodName, id, "Stopping reference-started service", dep, "refcount", count);
- sset.lingeringStop();
+ if ( sset.isAutostart() ) { // could have happened after the reference
+ sset.setReferencedStart(false); // so we don't linger, just reset
+ } else {
+ logger.debug(methodName, id, "Stopping reference-started service", dep, "refcount", count);
+ sset.lingeringStop();
+ }
}
}
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java?rev=1469067&r1=1469066&r2=1469067&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java Wed Apr 17 20:43:12 2013
@@ -647,6 +647,11 @@ public class ServiceSet
}
}
+ synchronized boolean isAutostart()
+ {
+ return autostart;
+ }
+
synchronized void persistImplementors()
{
if ( isImplicit() ) return;