You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by de...@apache.org on 2015/02/10 21:08:54 UTC

svn commit: r1658793 - /uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java

Author: degenaro
Date: Tue Feb 10 20:08:53 2015
New Revision: 1658793

URL: http://svn.apache.org/r1658793
Log:
UIMA-4069 DUCC Job Driver (JD) system classpath

stop JD last after, all JPs are defunct

Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java?rev=1658793&r1=1658792&r2=1658793&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java Tue Feb 10 20:08:53 2015
@@ -324,7 +324,6 @@ public class StateManager {
 				while(iterator.hasNext()) {
 					IDuccProcess process = iterator.next();
 					process.setProcessJmxUrl(jdJmxUrl);
-					
 				}
 			}
 		}
@@ -678,6 +677,8 @@ public class StateManager {
 						if(!duccWorkJob.isFinished()) {
 							stateJobAccounting.stateChange(duccWorkJob, JobState.Completing);
 						}
+						stopJps(duccWorkJob);
+						stopJd(duccWorkJob);
 						break;
 					case Completed:
 						if(!duccWorkJob.isCompleted()) {
@@ -685,9 +686,7 @@ public class StateManager {
 								stateJobAccounting.stateChange(duccWorkJob, JobState.Completing);
 							}
 							stopJps(duccWorkJob);
-							if(!duccWorkJob.hasAliveProcess()) {
-								stopJd(duccWorkJob);
-							}
+							stopJd(duccWorkJob);
 							duccWorkJob.getStandardInfo().setDateOfCompletion(TimeStamp.getCurrentMillis());
 							switch(jdStatusReport.getJobCompletionType()) {
 							case EndOfJob:
@@ -876,18 +875,41 @@ public class StateManager {
 		}
 	}
 	
+	private boolean delayStopJd(DuccWorkJob job) {
+		String methodName = "delayStopJd";
+		boolean retVal = true;
+		job.setCompletingTOD();
+		if(!job.hasAliveProcess()) {
+			long elapsed = System.currentTimeMillis() - job.getCompletingTOD();
+			if((System.currentTimeMillis() - job.getCompletingTOD()) > 1000*60*5) {
+				logger.debug(methodName, job.getDuccId(), ""+elapsed);
+				retVal = false;
+			}
+			else if(!job.hasNoPidProcess()) {
+				logger.debug(methodName, job.getDuccId(), "all JPs have PIDs");
+				retVal = false;
+			}
+		}
+		if(retVal) {
+			logger.debug(methodName, job.getDuccId(), "");
+		}
+		return retVal;
+	}
+	
 	private void stopJd(DuccWorkJob job) {
 		String methodName = "stopJd";
-		IDuccProcessMap processMap = job.getDriver().getProcessMap();
-		Iterator<DuccId> iterator = processMap.keySet().iterator();
-		while (iterator.hasNext()) {
-			DuccId duccId = iterator.next();
-			IDuccProcess process = processMap.get(duccId);
-			if(process != null) {
-				if(!process.isDeallocated()) {
-					OrUtil.setResourceState(job, process, ResourceState.Deallocated);
-					process.setProcessDeallocationType(ProcessDeallocationType.Voluntary);
-					logger.info(methodName, job.getDuccId(), process.getDuccId(), "deallocated");
+		if(!delayStopJd(job)) {
+			IDuccProcessMap processMap = job.getDriver().getProcessMap();
+			Iterator<DuccId> iterator = processMap.keySet().iterator();
+			while (iterator.hasNext()) {
+				DuccId duccId = iterator.next();
+				IDuccProcess process = processMap.get(duccId);
+				if(process != null) {
+					if(!process.isDeallocated()) {
+						OrUtil.setResourceState(job, process, ResourceState.Deallocated);
+						process.setProcessDeallocationType(ProcessDeallocationType.Voluntary);
+						logger.info(methodName, job.getDuccId(), process.getDuccId(), "deallocated");
+					}
 				}
 			}
 		}