You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by cw...@apache.org on 2016/11/10 18:51:40 UTC

svn commit: r1769182 - in /uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent: NodeAgent.java launcher/CGroupsManager.java

Author: cwiklik
Date: Thu Nov 10 18:51:40 2016
New Revision: 1769182

URL: http://svn.apache.org/viewvc?rev=1769182&view=rev
Log:
UIMA-5157 modified to kill all processes found in cgroups still running while an agent is stopping

Modified:
    uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/NodeAgent.java
    uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/CGroupsManager.java

Modified: uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/NodeAgent.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/NodeAgent.java?rev=1769182&r1=1769181&r2=1769182&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/NodeAgent.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/NodeAgent.java Thu Nov 10 18:51:40 2016
@@ -350,7 +350,7 @@ public class NodeAgent extends AbstractD
                   if ( useCgroups ) {
                       try {
                           // remove stale CGroups
-                          cgroupsManager.cleanupOnStartup();
+                          cgroupsManager.cleanup();
                         } catch (Exception e) {
                           logger.error("nodeAgent", null, e);
                     	  useCgroups = false;
@@ -1872,6 +1872,10 @@ public class NodeAgent extends AbstractD
     DuccEvent duccEvent = new NodeInventoryUpdateDuccEvent(emptyMap,getLastORSequence(), getIdentity());
     inventoryDispatcher.dispatch(duccEvent);
     logger.info("stop", null, "Agent published final inventory");
+
+    // Since SIGTERM may not be enough to take down a process, use cgroups to find
+    // any process still standing and do hard kill 
+    cgroupsManager.cleanup();
    
     // Self destruct thread in case we loose AMQ broker and AMQ listener gets into retry
     // mode trying to recover a connection

Modified: uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/CGroupsManager.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/CGroupsManager.java?rev=1769182&r1=1769181&r2=1769182&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/CGroupsManager.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/CGroupsManager.java Thu Nov 10 18:51:40 2016
@@ -251,7 +251,7 @@ public class CGroupsManager {
 	 * 
 	 * @throws Exception
 	 */
-	public void cleanupOnStartup() throws Exception {
+	public void cleanup() throws Exception {
 
 		Set<NodeProcessInfo> processes = getProcessesOnNode();
 		// Match any folder under /cgroup/ducc that has syntax
@@ -277,7 +277,7 @@ public class CGroupsManager {
 					String[] pids = readPids(f);
 
 					if ( pids != null && pids.length > 0 ) {
-						agentLogger.info("cleanupOnStartup", null,"Agent found "+pids.length+" cgroup proceses still active after Agent restart. Proceeding to remove stale processes");
+						agentLogger.info("cleanupOnStartup", null,"Agent found "+pids.length+" cgroup proceses still active. Proceeding to remove running processes");
 					}
 
 					int zombieCount=0;
@@ -332,6 +332,8 @@ public class CGroupsManager {
 					} else {
 						agentLogger.info("cleanupOnStartup", null,"CGroup "+cgroupFolder+" Contains Zombie Processing. Not Removing the Container");
 					}
+				} catch (FileNotFoundException e) {
+					// noop. Cgroup may have been removed already
 				} catch (Exception e) {
 					agentLogger.error("cleanupOnStartup", null, e);
 				}