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() {