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/03/29 14:21:58 UTC
svn commit: r1583001 - in
/uima/sandbox/uima-ducc/trunk/uima-ducc-sm/src/main/java/org/apache/uima/ducc/sm:
ServiceHandler.java ServiceSet.java
Author: challngr
Date: Sat Mar 29 13:21:57 2014
New Revision: 1583001
URL: http://svn.apache.org/r1583001
Log:
UIMA-3707 Add shutdown hook to stop pingers.
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=1583001&r1=1583000&r2=1583001&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 Sat Mar 29 13:21:57 2014
@@ -73,6 +73,7 @@ public class ServiceHandler
public ServiceHandler(IServiceManager serviceManager)
{
this.serviceManager = serviceManager;
+ Runtime.getRuntime().addShutdownHook(new ServiceShutdown());
}
public synchronized void run()
@@ -1119,6 +1120,27 @@ public class ServiceHandler
// }
// }
+ /**
+ * This is the shutdown hook that stops all the pingers.
+ */
+ class ServiceShutdown
+ extends Thread
+ {
+ ServiceShutdown()
+ {
+ }
+
+ public void run()
+ {
+ String methodName = "ServiceShutdown.run";
+ List<ServiceSet> allServices = serviceStateHandler.getServices();
+ for (ServiceSet sset : allServices) {
+ sset.stopMonitor();
+ }
+ }
+
+ }
+
class ServiceStateHandler
{
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=1583001&r1=1583000&r2=1583001&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 Sat Mar 29 13:21:57 2014
@@ -147,6 +147,8 @@ public class ServiceSet
int run_failures = 0;
boolean excessiveRunFailures = false; // signalled by monitor / pinger if we have too many
+ boolean inShutdown = false;
+
//
// Constructor for a registered service
//
@@ -1397,6 +1399,7 @@ public class ServiceSet
{
String methodName = "startPingThread";
if ( serviceMeta != null ) return; // don't start multiple times.
+ if ( inShutdown ) return; // in shutdown, don't restart
try {
logger.info(methodName, id, "Starting service monitor.");
@@ -1431,6 +1434,14 @@ public class ServiceSet
}
}
+ synchronized void stopMonitor()
+ {
+ String methodName = "stopMonitor";
+ logger.info(methodName, id, "Stopping pinger due to shutdown");
+ inShutdown = true;
+ stopPingThread();
+ }
+
public synchronized void stopPingThread()
{
String methodName = "stopPingThread";
@@ -1441,7 +1452,10 @@ public class ServiceSet
serviceMeta = null;
}
- saveMetaProperties();
+ if ( ! inShutdown ) {
+ saveMetaProperties(); // no i/o during shutdown, it has to be fast and clean
+ // things will be cleaned up and resynced on restart
+ }
}
void log_text(String logdir, String text)