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/02/12 18:27:47 UTC
svn commit: r1445281 - in /uima/sandbox/uima-ducc/trunk:
uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/
uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/
uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/
Author: challngr
Date: Tue Feb 12 17:27:47 2013
New Revision: 1445281
URL: http://svn.apache.org/r1445281
Log:
UIMA-2658
Use -1 instead of flag for "no instances specified". Issue error from CLI on attempts to specify
<= 0 instances.
Modified:
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceApi.java
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-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceModifyEvent.java
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceStartEvent.java
uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceStopEvent.java
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceApi.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceApi.java?rev=1445281&r1=1445280&r2=1445281&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceApi.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceApi.java Tue Feb 12 17:27:47 2013
@@ -473,16 +473,25 @@ public class DuccServiceApi
throw new IllegalArgumentException("Invalid id; must be numeric or start with " + ServiceType.UimaAs.decode() + " or " + ServiceType.Custom.decode() + ".");
}
- private int getInstances(CommandLine cl, String deflt)
+ private int getInstances(CommandLine cl, int dflt)
{
- String nstncs = cl.getOptionValue(ServiceOptions.Instances.decode(), deflt);
+ String nstncs = cl.getOptionValue(ServiceOptions.Instances.decode());
+ if ( nstncs == null ) {
+ return dflt;
+ }
+
int instances = 0;
try {
instances = Integer.parseInt(nstncs);
} catch ( NumberFormatException e ) {
- System.out.println ("--" + ServiceOptions.Instances.decode() + " " + nstncs + " is not numeric.");
+ System.out.println (ServiceOptions.Instances.decode() + " " + nstncs + " is not numeric.");
doExit(1);
}
+ if ( instances <= 0 ) {
+ System.out.println(ServiceOptions.Instances.decode() + " " + nstncs + " must be > 0");
+ doExit(1);
+ }
+
return instances;
}
@@ -944,7 +953,7 @@ public class DuccServiceApi
switch ( verb ) {
case Register:
props = getPropsFile(commandLine);
- instances = getInstances(commandLine, "1");
+ instances = getInstances(commandLine, 1);
autostart = getAutostart(commandLine);
reply = register(props, instances, autostart);
break;
@@ -954,19 +963,19 @@ public class DuccServiceApi
break;
case Start:
id = getId(commandLine, verb);
- instances = getInstances(commandLine, "0");
+ instances = getInstances(commandLine, -1);
update = getUpdate(commandLine);
reply = start(id.first(), id.second(), instances, update);
break;
case Stop:
id = getId(commandLine, verb);
- instances = getInstances(commandLine, "0");
+ instances = getInstances(commandLine, -1);
update = getUpdate(commandLine);
reply = stop(id.first(), id.second(), instances, update);
break;
case Modify:
id = getId(commandLine, verb);
- instances = getInstances(commandLine, "0");
+ instances = getInstances(commandLine, -1);
autostart = getAutostart(commandLine);
activate = getActivate(commandLine);
reply = modify(id.first(), id.second(), instances, autostart, activate);
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=1445281&r1=1445280&r2=1445281&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 Tue Feb 12 17:27:47 2013
@@ -738,7 +738,7 @@ public class ServiceHandler
int registered = sset.getNInstances();
int wanted = 0;
- if ( instances == 0 ) {
+ if ( instances == -1 ) {
wanted = Math.max(0, registered - running);
} else {
wanted = instances;
@@ -782,7 +782,7 @@ public class ServiceHandler
int registered = sset.getNInstances();
int wanted = 0;
- if ( instances == 0 ) {
+ if ( instances == -1 ) {
wanted = Math.max(0, registered - running);
} else {
wanted = instances;
@@ -822,16 +822,19 @@ public class ServiceHandler
int running = sset.countImplementors();
int instances = ev.getInstances();
int tolose;
- if ( instances == 0 ) {
+ if ( instances == -1 ) {
tolose = running;
} else {
tolose = Math.min(instances, running);
}
- ApiHandler apih = new ApiHandler(ev, this);
- Thread t = new Thread(apih);
- t.start();
+ if ( tolose > 0 ) {
+ ApiHandler apih = new ApiHandler(ev, this);
+ Thread t = new Thread(apih);
+ t.start();
+ }
+
return new ServiceReplyEvent(ServiceCode.OK, "Service " + serviceIdString + " stop request accepted for [" + tolose + "] instances.", sset.getKey(), sset.getId());
} else {
return new ServiceReplyEvent(ServiceCode.NOTOK, "Service " + friendly + " is not a registered service.", sset.getKey(), null);
@@ -854,7 +857,7 @@ public class ServiceHandler
int running = sset.countImplementors();
int tolose;
- if ( instances == 0 ) {
+ if ( instances == -1 ) {
tolose = running;
} else {
tolose = Math.min(instances, running);
@@ -867,7 +870,7 @@ public class ServiceHandler
if ( tolose == running ) {
sset.stop(); // blind stop
} else {
- sset.stop(tolose); // selective stop (TODO: eventually)
+ sset.stop(tolose); // selective stop
}
}
@@ -954,24 +957,27 @@ public class ServiceHandler
if ( instances > 0 ) {
sset.setNInstances(instances); // also persists instances
+ if ( activate ) {
+ int running = sset.countImplementors();
+ int diff = instances - running;
+
+ if ( diff > 0 ) {
+ while ( diff-- > 0 ) {
+ sset.start();
+ }
+ } else if ( diff < 0 ) {
+ sset.stop(-diff);
+ }
+ }
}
if ( autostart != Trinary.Unset ) {
sset.setAutostart(autostart.decode());
- }
-
- if ( activate && (instances >0) ) {
- int running = sset.countImplementors();
- int diff = instances - running;
-
- if ( diff > 0 ) {
- while ( diff-- > 0 ) {
- sset.start();
- }
- } else if ( diff < 0 ) {
- sset.stop(-diff);
+ if ( activate ) {
+ sset.insuareAutostart();
}
}
+
}
public ServiceReplyEvent unregister(ServiceUnregisterEvent ev)
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceModifyEvent.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceModifyEvent.java?rev=1445281&r1=1445280&r2=1445281&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceModifyEvent.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceModifyEvent.java Tue Feb 12 17:27:47 2013
@@ -38,7 +38,7 @@ public class ServiceModifyEvent
this.friendly = friendly;
this.epname = epname;
this.user = user;
- this.instances = 0;
+ this.instances = -1; // default, instances aren't changed
this.autostart = Trinary.Unset;
this.activate = false;
}
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceStartEvent.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceStartEvent.java?rev=1445281&r1=1445280&r2=1445281&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceStartEvent.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceStartEvent.java Tue Feb 12 17:27:47 2013
@@ -34,6 +34,7 @@ public class ServiceStartEvent
this.user = user;
this.friendly = friendly;
this.epname = epname;
+ this.instances = -1; // default, don't change number of instances
}
public int getFriendly() {
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceStopEvent.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceStopEvent.java?rev=1445281&r1=1445280&r2=1445281&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceStopEvent.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/ServiceStopEvent.java Tue Feb 12 17:27:47 2013
@@ -37,6 +37,7 @@ public class ServiceStopEvent
this.friendly = friendly;
this.epname = epname;
this.user = user;
+ this.instances = -1;
}
public long getFriendly() {