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/11 16:51:03 UTC
svn commit: r1586666 - in
/uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm:
PingDriver.java ServiceHandler.java ServiceInstance.java ServiceSet.java
Author: challngr
Date: Fri Apr 11 14:51:03 2014
New Revision: 1586666
URL: http://svn.apache.org/r1586666
Log:
UIMA-3740 Pass node residency and RM share id to ping/monitor.
Modified:
uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/PingDriver.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-sm/src/main/java/org/apache/uima/ducc/sm/ServiceInstance.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/PingDriver.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/PingDriver.java?rev=1586666&r1=1586665&r2=1586666&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/PingDriver.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/PingDriver.java Fri Apr 11 14:51:03 2014
@@ -435,7 +435,18 @@ class PingDriver
void setCommonProperties(Map<String, Object> props)
{
- props.put("all-instances" , sset.getImplementors());
+ Long[] instances = sset.getImplementors();
+ props.put("all-instances" , instances);
+
+ String[] hosts = new String[instances.length];
+ Long[] shares = new Long[instances.length];
+ for ( int i = 0; i < instances.length; i++ ) {
+ hosts[i] = sset.getHostFor(instances[i]);
+ shares[i] = sset.getShareFor(instances[i]);
+ }
+ props.put("all-hosts" , hosts);
+ props.put("all-shares" , shares);
+
props.put("active-instances" , sset.getActiveInstances());
props.put("autostart-enabled", sset.isAutostart());
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=1586666&r1=1586665&r2=1586666&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 Fri Apr 11 14:51:03 2014
@@ -28,6 +28,7 @@ import java.util.Set;
import org.apache.uima.ducc.cli.DuccServiceApi;
import org.apache.uima.ducc.cli.IUiOptions.UiOption;
+import org.apache.uima.ducc.common.NodeIdentity;
import org.apache.uima.ducc.common.utils.DuccLogger;
import org.apache.uima.ducc.common.utils.DuccProperties;
import org.apache.uima.ducc.common.utils.id.DuccId;
@@ -39,6 +40,8 @@ import org.apache.uima.ducc.transport.ev
import org.apache.uima.ducc.transport.event.ServiceStopEvent;
import org.apache.uima.ducc.transport.event.ServiceUnregisterEvent;
import org.apache.uima.ducc.transport.event.common.DuccWorkJob;
+import org.apache.uima.ducc.transport.event.common.IDuccProcess;
+import org.apache.uima.ducc.transport.event.common.IDuccProcessMap;
import org.apache.uima.ducc.transport.event.common.IDuccWork;
import org.apache.uima.ducc.transport.event.sm.IService.ServiceState;
import org.apache.uima.ducc.transport.event.sm.IServiceDescription;
@@ -513,7 +516,22 @@ public class ServiceHandler
for ( DuccId id : work.keySet() ) {
DuccWorkJob w = (DuccWorkJob) work.get(id);
String url = w.getServiceEndpoint();
-
+
+ IDuccProcessMap pm = w.getProcessMap();
+ String node = "<unknown>";
+ Long share_id = -1L;
+ if ( pm.size() > 1 ) {
+ logger.warn(methodName, id, "Process map is too large, should be size 1. Size:", pm.size(), "Cannot determine node or share_id for service.");
+ } else if ( pm.size() < 1 ) {
+ logger.warn(methodName, id, "Process map is empty but we are expecting exactly one entry. Cannot determine node or share id for service.");
+ } else {
+ for ( DuccId pid : pm.keySet() ) {
+ NodeIdentity ni = pm.get(pid).getNodeIdentity();
+ node = ni.getName();
+ share_id = pid.getFriendly();
+ }
+ }
+
if (url == null ) { // probably impossible but lets not chance NPE
logger.warn(methodName, id, "Missing service endpoint/url, ignoring.");
continue;
@@ -539,6 +557,9 @@ public class ServiceHandler
continue; // we don't care any more, he's gone
}
+ if ( share_id != -1 ) {
+ sset.updateInstance(id.getFriendly(), share_id, node);
+ }
ServiceDependency s = serviceMap.get(id);
if ( w.isFinished() ) { // nothing more, just dereference and maybe stop stuff I'm dependent upon
// state Completing or Completed
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceInstance.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceInstance.java?rev=1586666&r1=1586665&r2=1586666&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceInstance.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceInstance.java Fri Apr 11 14:51:03 2014
@@ -39,7 +39,10 @@ class ServiceInstance
{
private DuccLogger logger = DuccLogger.getLogger(this.getClass().getName(), COMPONENT_NAME);
- long numeric_id; // unique numeric ducc-assigned id
+ long numeric_id; // unique numeric ducc-assigned id
+ long share_id; // RM's share ID for this instance
+ String host; // Where the instance is scheduled
+
ServiceSet sset; // handle to the service definitiopn
JobState state = JobState.Undefined; // orchestartor state
@@ -56,6 +59,8 @@ class ServiceInstance
this.numeric_id = -1;
this.sset = sset;
this.stopped = true;
+ this.share_id = -1;
+ this.host = "<unknown>";
}
public long getId() {
@@ -66,6 +71,16 @@ class ServiceInstance
this.numeric_id = id;
}
+ public long getShareId()
+ {
+ return share_id;
+ }
+
+ public String getHost()
+ {
+ return host;
+ }
+
void setUser(String user)
{
this.user = user;
@@ -114,6 +129,12 @@ class ServiceInstance
}
}
+ synchronized void update(long share_id, String host)
+ {
+ this.share_id = share_id;
+ this.host = host;
+ }
+
synchronized void setStopped(boolean s)
{
this.stopped = s;
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=1586666&r1=1586665&r2=1586666&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 Fri Apr 11 14:51:03 2014
@@ -272,6 +272,16 @@ public class ServiceSet
return implementors.keySet().toArray(new Long[implementors.size()]);
}
+ synchronized String getHostFor(Long implid)
+ {
+ return implementors.get(implid).getHost();
+ }
+
+ synchronized long getShareFor(Long implid)
+ {
+ return implementors.get(implid).getShareId();
+ }
+
synchronized DuccId[] getReferences()
{
return references.keySet().toArray(new DuccId[references.size()]);
@@ -720,6 +730,17 @@ public class ServiceSet
return;
}
+ synchronized void updateInstance(long iid, long share_id, String host)
+ {
+ String methodName = "updateInstance";
+ ServiceInstance inst = implementors.get(iid);
+ if ( inst == null ) {
+ logger.warn(methodName, id, "Cannot find instance", iid, "for update:", host + ":" + share_id);
+ return;
+ }
+ inst.update(share_id, host);
+ }
+
synchronized void updateRegisteredInstances(int n)
{
meta_props.setProperty("instances", Integer.toString(n));