Author: eae
Date: Thu Jun 30 20:46:11 2016
New Revision: 1750861
URL: http://svn.apache.org/viewvc?rev=1750861&view=rev
Log:
UIMA-4995 don't let instances go to 0 on rebalance when autostart=true
Modified:
uima/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java
Modified:
uima/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java
URL:
http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java?rev=1750861&r1=1750860&r2=1750861&view=diff
==============================================================================
---
uima/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java
(original)
+++
uima/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceSet.java
Thu Jun 30 20:46:11 2016
@@ -1290,8 +1290,10 @@ public class ServiceSet
}
for ( int i = 0; i < ndeletions; i++ ) {
- instances = Math.max(0, instances - 1); // prevent autostart and
error handling from restarting things
- stop(deletions[i]);
+ instances -= stop(deletions[i]); // stop() may return 0 or 1
+ }
+ if (this.isAutostart() && instances == 0) {
+ instances = 1; // keep autostarted services running at least one
instance on rebalance
}
try {
@@ -2161,7 +2163,7 @@ public class ServiceSet
/**
* Stop a specific instance.
*/
- synchronized void stop(Long iid)
+ synchronized int stop(Long iid)
{
String methodName = "stop(id)";
@@ -2170,10 +2172,12 @@ public class ServiceSet
ServiceInstance si = implementors.get(iid);
if ( si == null ) {
logger.warn(methodName, id, "Can't find instance", iid, ", perhaps
it's already gone.");
+ return 0;
} else {
si.stop();
stash_instance_id(si.getInstanceId()); // UIMA-4258
signal(si);
+ return 1;
}
}