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 2013/04/17 22:43:12 UTC

svn commit: r1469067 - 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 17 20:43:12 2013
New Revision: 1469067

URL: http://svn.apache.org/r1469067
Log:
UIMA-2818
Check autostart flag when reference starting and linger-stopping services as it
may have been set while nobody was looking and we need to avoid linger-stopping
the service if it is set.

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=1469067&r1=1469066&r2=1469067&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 17 20:43:12 2013
@@ -281,7 +281,9 @@ public class ServiceHandler
                     // Registered but not alive, well, we can fix that!
                     int ninstances = sset.getNInstances();
                     logger.debug(methodName, sset.getId(), "Reference-starting registered service, instances =", ninstances);
-                    sset.setReferencedStart(true);
+                    if ( ! sset.isAutostart() ) {         // must avoid races ith autostart for referenced start
+                        sset.setReferencedStart(true);
+                    }
                     for ( int i = 0; i < ninstances; i++ ) {
                         if ( ! sset.start() ) {
                             s.addMessage(dep, "Can't start independent service.");
@@ -378,8 +380,12 @@ public class ServiceHandler
                     serviceStateHandler.removeService(dep);
                 }
                 if ( sset.isRegistered() && sset.isReferencedStart() ) {
-                    logger.debug(methodName, id, "Stopping reference-started service", dep, "refcount", count);
-                    sset.lingeringStop();
+                    if ( sset.isAutostart() ) {            // could have happened after the reference
+                        sset.setReferencedStart(false);    // so we don't linger, just reset
+                    } else {
+                        logger.debug(methodName, id, "Stopping reference-started service", dep, "refcount", count);
+                        sset.lingeringStop();
+                    }
                 }
 
             }

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=1469067&r1=1469066&r2=1469067&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 17 20:43:12 2013
@@ -647,6 +647,11 @@ public class ServiceSet
         }
     }
 
+    synchronized boolean isAutostart()
+    {
+        return autostart;
+    }
+
     synchronized void persistImplementors()
     {
         if ( isImplicit() ) return;