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 2014/04/09 22:29:50 UTC

svn commit: r1586130 - 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  9 20:29:50 2014
New Revision: 1586130

URL: http://svn.apache.org/r1586130
Log:
UIMA-3734 Service debug support.

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=1586130&r1=1586129&r2=1586130&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  9 20:29:50 2014
@@ -659,6 +659,16 @@ public class ServiceHandler
 
         int running    = sset.countImplementors();
         int instances  = ev.getInstances();
+
+        if ( sset.isDebug() ) {
+            if ( sset.countImplementors() > 0 ) {
+                return new ServiceReplyEvent(true, 
+                                             "Already has instances[" + running + "] and service has process_debug set - no additional instances started", 
+                                             sset.getKey(), 
+                                             sset.getId().getFriendly());
+            }
+        }
+
         int registered = sset.getNInstancesRegistered();
         int wanted     = 0;
         
@@ -667,6 +677,7 @@ public class ServiceHandler
         } else {
             wanted = instances;
         }
+        
         if ( wanted == 0 ) {
             return new ServiceReplyEvent(true, 
                                          "Already has instances[" + running + "] - no additional instances started", 
@@ -675,11 +686,18 @@ public class ServiceHandler
         }
         
         pendingRequests.add(new ApiHandler(ev, this));
-        
-        return new ServiceReplyEvent(true, 
-                                     "New instances[" + wanted + "]", 
-                                     sset.getKey(), 
-                                     sset.getId().getFriendly());
+
+        if ( sset.isDebug() && (wanted > 1) ) {
+            return new ServiceReplyEvent(true, 
+                                         "Instances adjusted to [1] because process_debug is set",
+                                         sset.getKey(), 
+                                         sset.getId().getFriendly());
+        } else {
+            return new ServiceReplyEvent(true, 
+                                         "New instances[" + wanted + "]", 
+                                         sset.getKey(), 
+                                         sset.getId().getFriendly());
+        }
     }
 
     //
@@ -691,13 +709,25 @@ public class ServiceHandler
     //
     void doStart(long friendly, String epname, int instances, boolean update)
     {
-    	//String methodName = "doStart";
+    	String methodName = "doStart";
         ServiceSet sset = serviceStateHandler.getServiceForApi(friendly, epname);
 
         int running    = sset.countImplementors();
         int registered = sset.getNInstancesRegistered();
         int wanted     = 0;
 
+        if ( sset.isDebug() ) {
+            if ( sset.countImplementors() > 0  ) {
+                logger.warn(methodName, sset.getId(), "Not starting additional instances because process_debug is set.");
+                return;
+            }
+            
+            if ( instances > 1 ) {
+                logger.warn(methodName, sset.getId(), "Adjusting instances to [1] because process_debug is set.");
+                instances = 1;
+            }
+        }
+
         if ( instances == -1 ) {
             wanted = Math.max(0, registered - running);
         } else {

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=1586130&r1=1586129&r2=1586130&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  9 20:29:50 2014
@@ -111,7 +111,9 @@ public class ServiceSet
     boolean reference_start = false;
     // is it ping-only?
     boolean ping_only = false;
-    
+    // debug specified in the registration?
+    boolean process_debug = false;
+
     // Date of last known use of the service.  0 means "I don't know"
     long last_use = 0;
 
@@ -176,6 +178,10 @@ public class ServiceSet
         this.service_class = ServiceClass.Registered;
         this.init_failure_max = props.getIntProperty("instance_init_failures_limit", init_failure_max);
 
+        if ( props.containsKey(UiOption.ProcessDebug.pname()) ) {
+            this.process_debug = true;
+        }
+
         parseIndependentServices();
 
         meta_props.remove("references");          // Will get refreshred in upcoming OR state messages
@@ -338,6 +344,11 @@ public class ServiceSet
         meta_props.put(k, v);
     }
 
+    boolean isDebug()
+    {
+        return process_debug;
+    }
+
     private void parseIndependentServices()
     {
         String depstr = job_props.getProperty(UiOption.ServiceDependency.pname());
@@ -1586,6 +1597,18 @@ public class ServiceSet
             signal(si);
         } else {
 
+            if ( isDebug() ) {
+                if ( countImplementors() > 0 ) {
+                    logger.warn(methodName, id, "Ignoring start of additional instances because process_debug is set.");
+                    return;         // only one, in debug
+                }
+
+                if ( ninstances > 1 ) {
+                    ninstances = 1;                                  // and alter the number here.
+                    logger.warn(methodName, id, "Adjusting instances to one(1) because process_debug is set.");
+                }
+            }
+
             for ( int i = 0; i < ninstances; i++ ) {
                 ServiceInstance si = new ServiceInstance(this);
                 long instid = -1L;