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;