You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by bu...@apache.org on 2017/04/13 16:10:33 UTC

svn commit: r1791271 - /uima/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceHandler.java

Author: burn
Date: Thu Apr 13 16:10:32 2017
New Revision: 1791271

URL: http://svn.apache.org/viewvc?rev=1791271&view=rev
Log:
UIMA-5372 After review made getServicesForApi check the url as before. Also in handleModifiedServices restored handling of an already-removed instance

Modified:
    uima/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceHandler.java

Modified: uima/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceHandler.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceHandler.java?rev=1791271&r1=1791270&r2=1791271&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceHandler.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm/ServiceHandler.java Thu Apr 13 16:10:32 2017
@@ -532,8 +532,6 @@ 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;
@@ -549,16 +547,25 @@ public class ServiceHandler
                 }
             }
 
-            if (url == null ) {              // probably impossible but lets not chance NPE
-                logger.warn(methodName, id, "Missing service endpoint/url, ignoring.");
+            // Use the service id in case the url has been removed while unregistering
+            String ssid = w.getServiceId();
+            if (ssid == null ) {              // probably impossible but lets not chance NPE
+                logger.warn(methodName, id, "Missing service id, ignoring.");
                 continue;
             }
 
             ServiceSet sset = serviceStateHandler.getServiceByImplementor(id.getFriendly());
             if (sset == null) {
-                // leftover junk publication maybe? can't tell
-                logger.info(methodName, id, "Update for active service instance", id.toString(), "but have no registration for it. Job state:", w.getJobState());
-                continue;
+                // If already removed try via the service id (the url may have been removed while unregistering)
+                long sid = Long.valueOf(ssid);
+                sset = serviceStateHandler.getServiceById(sid);
+                if ( sset == null ) {
+                    // leftover junk publication maybe? can't tell
+                    logger.info(methodName, id, "Active service instance update for", w.getServiceId(),
+                                "but have no registration for it. Job state:", w.getJobState());
+                    continue;
+                }
+                logger.info(methodName, id, "Update for possibly unregistered service. Job State:", w.getJobState());
             }
 
             if ( !sset.containsImplementor(id) ) {
@@ -1515,7 +1522,7 @@ public class ServiceHandler
          // API passes in either an id or an endpoint but not both.
          synchronized ServiceSet  getServiceForApi(long id, String n)
          {
-             return id == -1 ? getServiceByUrl(n) : getServiceById(id);
+             return n == null ? getServiceById(id) : getServiceByUrl(n);
          }
 
          synchronized void removeService(ServiceSet sset)