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));