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 2013/03/22 19:32:48 UTC

svn commit: r1459919 - in /uima/sandbox/uima-ducc/trunk: uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/ uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/

Author: degenaro
Date: Fri Mar 22 18:32:48 2013
New Revision: 1459919

URL: http://svn.apache.org/r1459919
Log:
UIMA-2769 DUCC support for Managed Reservations with Reason of ProgramExit and hover for code

Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/ProcessAccounting.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccCompletionType.java

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/ProcessAccounting.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/ProcessAccounting.java?rev=1459919&r1=1459918&r2=1459919&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/ProcessAccounting.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/ProcessAccounting.java Fri Mar 22 18:32:48 2013
@@ -297,6 +297,8 @@ public class ProcessAccounting {
 				process.setCpuTime(inventoryProcess.getCpuTime());
 				logger.trace(methodName, job.getDuccId(), process.getDuccId(), "Cpu Time:"+process.getCpuTime());
 				logger.info(methodName, job.getDuccId(), process.getDuccId(), messages.fetchLabel("process state")+process.getProcessState());
+				process.setProcessExitCode(inventoryProcess.getProcessExitCode());
+				logger.info(methodName, job.getDuccId(), process.getDuccId(), messages.fetchLabel("process exit code")+process.getProcessExitCode());
 				break;
 			}
 		}

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=1459919&r1=1459918&r2=1459919&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 Fri Mar 22 18:32:48 2013
@@ -1135,7 +1135,7 @@ public class StateManager {
 										OrchestratorCommonArea.getInstance().getProcessAccounting().deallocate(service,ProcessDeallocationType.Stopped);
 									}
 									if(!service.hasAliveProcess()) {
-										completeJob(service, new Rationale("state manager reported no viable service process exists, type="+processType));
+										completeManagedReservation(service, new Rationale("state manager reported no viable service process exists, type="+processType));
 									}
 									break;
 								case Service:
@@ -1200,7 +1200,57 @@ public class StateManager {
 		logger.trace(methodName, null, messages.fetch("exit"));
 	}
 	
+	private void advanceToCompleted(DuccWorkJob job) {
+		switch(job.getJobState()) {
+		case Completing:
+		case Completed:
+			break;
+		default:
+			if(job.getProcessMap().getAliveProcessCount() == 0) {
+				stateJobAccounting.stateChange(job, JobState.Completing);
+			}
+		}
+	}
+	
+	private void completeManagedReservation(DuccWorkJob service, IRationale rationale) {
+		String location = "completeManagedReservation";
+		DuccId jobid = null;
+		try {
+			
+			jobid = service.getDuccId();
+			Map<DuccId, IDuccProcess> map = service.getProcessMap().getMap();
+			int size = map.size();
+			if(size != 1) {
+				logger.warn(location, jobid, "size: "+size);
+				completeJob(service, rationale);
+			}
+			else {
+				Iterator<DuccId> iterator = map.keySet().iterator();
+				while(iterator.hasNext()) {
+					DuccId key = iterator.next();
+					IDuccProcess process = map.get(key);
+					int code = process.getProcessExitCode();
+					IRationale exitCode = new Rationale("code="+code);
+					switch(service.getCompletionType()) {
+					case Undefined:
+						service.setCompletion(JobCompletionType.ProgramExit, exitCode);
+						service.getStandardInfo().setDateOfCompletion(TimeStamp.getCurrentMillis());
+						break;
+					}
+					advanceToCompleted(service);
+					break;
+				}
+			}
+		}
+		catch(Exception e) {
+			logger.error(location, jobid, e);
+			completeJob(service, rationale);
+		}
+	}
+	
 	private void completeJob(DuccWorkJob job, IRationale rationale) {
+		String location = "completeJob";
+		DuccId jobid = null;
 		switch(job.getCompletionType()) {
 		case Undefined:
 			job.setCompletion(JobCompletionType.EndOfJob, rationale);
@@ -1219,21 +1269,14 @@ public class StateManager {
 					}
 				}
 				catch(Exception e) {
+					logger.error(location, jobid, e);
 				}
 			}
 			break;
 		default:
 			break;
 		}
-		switch(job.getJobState()) {
-		case Completing:
-		case Completed:
-			break;
-		default:
-			if(job.getProcessMap().getAliveProcessCount() == 0) {
-				stateJobAccounting.stateChange(job, JobState.Completing);
-			}
-		}
+		advanceToCompleted(job);
 	}
 	
 	public void jobTerminate(IDuccWorkJob job, JobCompletionType jobCompletionType, IRationale rationale, ProcessDeallocationType processDeallocationType) {

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccCompletionType.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccCompletionType.java?rev=1459919&r1=1459918&r2=1459919&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccCompletionType.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccCompletionType.java Fri Mar 22 18:32:48 2013
@@ -41,6 +41,9 @@ public interface IDuccCompletionType ext
 		ExcessiveProcessFailures,		// Job was terminated by health monitor - excessive process failures
 		ProcessInitializationFailure,	// Job was terminated by health monitor - (excessive) process initialization failure
 		ProcessFailure,					// Job was terminated by health monitor - (excessive) process failure
+		
+		ProgramExit,					// Managed Resource exited
+		
 		Undefined						// None of the above
 		;