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 2016/07/12 19:37:56 UTC

svn commit: r1752339 - in /uima/uima-ducc/trunk: uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/ uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/config/ uima-ducc-transport/src/main/java/org/apache/uima/du...

Author: degenaro
Date: Tue Jul 12 19:37:56 2016
New Revision: 1752339

URL: http://svn.apache.org/viewvc?rev=1752339&view=rev
Log:
UIMA-5007 Jobs using Java7 fail if DUCC uses Java8

Modified:
    uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/OrchestratorComponent.java
    uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java
    uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/config/OrchestratorConfiguration.java
    uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jd/JobDriverStateExchanger.java
    uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/JdRequestEvent.java
    uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessMap.java
    uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/IDriverStatusReport.java
    uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/JobDriverReport.java

Modified: uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/OrchestratorComponent.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/OrchestratorComponent.java?rev=1752339&r1=1752338&r2=1752339&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/OrchestratorComponent.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/OrchestratorComponent.java Tue Jul 12 19:37:56 2016
@@ -65,6 +65,7 @@ import org.apache.uima.ducc.transport.ev
 import org.apache.uima.ducc.transport.event.cli.ReservationReplyProperties;
 import org.apache.uima.ducc.transport.event.cli.ReservationRequestProperties;
 import org.apache.uima.ducc.transport.event.cli.SpecificationProperties;
+import org.apache.uima.ducc.transport.event.common.DuccProcessMap;
 import org.apache.uima.ducc.transport.event.common.DuccWorkJob;
 import org.apache.uima.ducc.transport.event.common.DuccWorkMap;
 import org.apache.uima.ducc.transport.event.common.DuccWorkReservation;
@@ -72,6 +73,7 @@ import org.apache.uima.ducc.transport.ev
 import org.apache.uima.ducc.transport.event.common.IDuccCompletionType.ReservationCompletionType;
 import org.apache.uima.ducc.transport.event.common.IDuccProcess;
 import org.apache.uima.ducc.transport.event.common.IDuccProcess.ReasonForStoppingProcess;
+import org.apache.uima.ducc.transport.event.common.IDuccProcessMap;
 import org.apache.uima.ducc.transport.event.common.IDuccReservation;
 import org.apache.uima.ducc.transport.event.common.IDuccReservationMap;
 import org.apache.uima.ducc.transport.event.common.IDuccState.JobState;
@@ -381,7 +383,8 @@ implements Orchestrator {
 			stateManager.reconcileState(dsr);
 			String sid = ""+duccId.getFriendly();
 			DuccWorkJob duccWorkJob = (DuccWorkJob) WorkMapHelper.cloneDuccWork(workMap, sid, this, methodName);
-			duccEvent.setJob(duccWorkJob);
+			IDuccProcessMap processMap = duccWorkJob.getProcessMap();
+			duccEvent.setProcessMap(new DuccProcessMap(processMap));
 		}
 		logger.trace(methodName, null, messages.fetch("exit"));
 	}

Modified: uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java?rev=1752339&r1=1752338&r2=1752339&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java Tue Jul 12 19:37:56 2016
@@ -338,7 +338,7 @@ public class StateManager {
 	private void copyInvestmentReport(DuccWorkJob job, IDriverStatusReport jdStatusReport) {
 		String methodName = "copyInvestmentReport";
 		try {
-			ConcurrentHashMap<RemoteLocation, Long> omMap = jdStatusReport.getInvestmentMillisMap();
+			Map<RemoteLocation, Long> omMap = jdStatusReport.getInvestmentMillisMap();
 			IDuccProcessMap processMap = job.getProcessMap();
 			for(Entry<DuccId, IDuccProcess> entry : processMap.entrySet()) {
 				IDuccProcess process = entry.getValue();

Modified: uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/config/OrchestratorConfiguration.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/config/OrchestratorConfiguration.java?rev=1752339&r1=1752338&r2=1752339&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/config/OrchestratorConfiguration.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/config/OrchestratorConfiguration.java Tue Jul 12 19:37:56 2016
@@ -166,7 +166,7 @@ public class OrchestratorConfiguration {
 			if(obj instanceof JdRequestEvent) {
 				JdRequestEvent jdRequestEvent = exchange.getIn().getBody(JdRequestEvent.class);
 				JdReplyEvent jdReplyEvent = new JdReplyEvent();
-				jdReplyEvent.setJob(jdRequestEvent.getJob());
+				jdReplyEvent.setProcessMap(jdRequestEvent.getProcessMap());
 				exchange.getIn().setBody(jdReplyEvent);
 			}
 			if(obj instanceof DuccWorkRequestEvent) {

Modified: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jd/JobDriverStateExchanger.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jd/JobDriverStateExchanger.java?rev=1752339&r1=1752338&r2=1752339&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jd/JobDriverStateExchanger.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jd/JobDriverStateExchanger.java Tue Jul 12 19:37:56 2016
@@ -38,10 +38,9 @@ import org.apache.uima.ducc.transport.di
 import org.apache.uima.ducc.transport.dispatcher.IDuccEventDispatcher;
 import org.apache.uima.ducc.transport.event.JdReplyEvent;
 import org.apache.uima.ducc.transport.event.JdRequestEvent;
-import org.apache.uima.ducc.transport.event.common.DuccProcessConcurrentMap;
+import org.apache.uima.ducc.transport.event.common.DuccProcessMap;
 import org.apache.uima.ducc.transport.event.common.IDuccProcess;
 import org.apache.uima.ducc.transport.event.common.IDuccProcessMap;
-import org.apache.uima.ducc.transport.event.common.IDuccWorkJob;
 import org.apache.uima.ducc.transport.event.common.IProcessState.ProcessState;
 import org.apache.uima.ducc.transport.event.common.IResourceState.ProcessDeallocationType;
 import org.apache.uima.ducc.transport.event.jd.IDriverStatusReport;
@@ -69,7 +68,7 @@ public class JobDriverStateExchanger ext
 	
 	private AtomicInteger getStateReqNo = new AtomicInteger(0);
 	
-	private IDuccProcessMap dpMap = new DuccProcessConcurrentMap();
+	private IDuccProcessMap dpMap = new DuccProcessMap();
 	
 	public static IDuccEventDispatcher create(Object specs) throws Exception {
 		IDuccEventDispatcher retVal = null;
@@ -143,7 +142,7 @@ public class JobDriverStateExchanger ext
 	}
 	
 	public void setProcessMap(IDuccProcessMap value) {
-		dpMap = value;
+		dpMap = new DuccProcessMap(value);
 	}
 	
 	public JdReplyEvent request(JdRequestEvent jdRequestEvent) {
@@ -179,85 +178,82 @@ public class JobDriverStateExchanger ext
 	
 	private void handle(JdReplyEvent jdReplyEvent) {
 		String location = "handle";
-		IDuccWorkJob dwj = jdReplyEvent.getJob();
 		try {
 			JobDriver jd = JobDriver.getInstance();
 			IMessageHandler mh = jd.getMessageHandler();
-			if(dwj != null) {
-				setProcessMap(dwj.getProcessMap());
-				IWorkItemStateKeeper wisk = JobDriver.getInstance().getWorkItemStateKeeper();
-				wisk.persist();
-				IDuccProcessMap pMap = dwj.getProcessMap();
-				for(Entry<DuccId, IDuccProcess> entry : pMap.entrySet()) {
-					IDuccProcess p = entry.getValue();
-					ProcessState state = p.getProcessState();
-					NodeIdentity ni = p.getNodeIdentity();
-					String node = ni.getName();
-					String ip = ni.getIp();
-					String pidName = p.getDuccId().getFriendly()+"";
-					String pid = p.getPID();
-					StringBuffer sb = new StringBuffer();
-					sb.append("node: "+node);
+			setProcessMap(jdReplyEvent.getProcessMap());
+			IWorkItemStateKeeper wisk = JobDriver.getInstance().getWorkItemStateKeeper();
+			wisk.persist();
+			IDuccProcessMap pMap = jdReplyEvent.getProcessMap();
+			for(Entry<DuccId, IDuccProcess> entry : pMap.entrySet()) {
+				IDuccProcess p = entry.getValue();
+				ProcessState state = p.getProcessState();
+				NodeIdentity ni = p.getNodeIdentity();
+				String node = ni.getName();
+				String ip = ni.getIp();
+				String pidName = p.getDuccId().getFriendly()+"";
+				String pid = p.getPID();
+				StringBuffer sb = new StringBuffer();
+				sb.append("node: "+node);
+				sb.append(" ");
+				sb.append("ip: "+ip);
+				sb.append(" ");
+				sb.append("pid: "+pid);
+				sb.append(" ");
+				sb.append("state:"+state.name());
+				sb.append(" ");
+				String reasonStopped = p.getReasonForStoppingProcess();
+				if(reasonStopped != null) {
+					sb.append("reason[stopped]:"+reasonStopped);
 					sb.append(" ");
-					sb.append("ip: "+ip);
-					sb.append(" ");
-					sb.append("pid: "+pid);
-					sb.append(" ");
-					sb.append("state:"+state.name());
-					sb.append(" ");
-					String reasonStopped = p.getReasonForStoppingProcess();
-					if(reasonStopped != null) {
-						sb.append("reason[stopped]:"+reasonStopped);
-						sb.append(" ");
-					}
-					String reasonDeallocated = null;
-					ProcessDeallocationType processDeallocationType = p.getProcessDeallocationType();
-					if(processDeallocationType != null) {
-						switch(processDeallocationType) {
-						case Undefined:
-							break;
-						default:
-							reasonDeallocated = processDeallocationType.name();
-							sb.append("reason[deallocated]:"+reasonDeallocated);
-							sb.append(" ");
-							break;
-						}
-					}
-					RemoteWorkerProcess rwp = RemoteWorkerProcess.factory(node, ip, pidName, pid);
-					if(jobProcessBlacklist.includes(rwp)) {
-						logger.trace(location, jobid, sb.toString());
-						continue;
-					}
-					logger.debug(location, jobid, sb.toString());
-					switch(state) {
-					case Starting:    
-					case Initializing:
-					case Running:
+				}
+				String reasonDeallocated = null;
+				ProcessDeallocationType processDeallocationType = p.getProcessDeallocationType();
+				if(processDeallocationType != null) {
+					switch(processDeallocationType) {
+					case Undefined:
 						break;
 					default:
-						try {
-							if(pid != null) {
-								int iPid = Integer.parseInt(pid.trim());
-								IProcessInfo processInfo = new ProcessInfo(node, ip, pidName, iPid, reasonStopped, reasonDeallocated);
-								if(p.isFailedInitialization()) {
-									mh.handleProcessFailedInitialization(processInfo);
-								}
-								else if(p.isPreempted()) {
-									mh.handleProcessPreempt(processInfo);
-								}
-								else if(p.isVolunteered()) {
-									mh.handleProcessVolunteered(processInfo);
-								}
-								else {
-									mh.handleProcessDown(processInfo);
-								}
+						reasonDeallocated = processDeallocationType.name();
+						sb.append("reason[deallocated]:"+reasonDeallocated);
+						sb.append(" ");
+						break;
+					}
+				}
+				RemoteWorkerProcess rwp = RemoteWorkerProcess.factory(node, ip, pidName, pid);
+				if(jobProcessBlacklist.includes(rwp)) {
+					logger.trace(location, jobid, sb.toString());
+					continue;
+				}
+				logger.debug(location, jobid, sb.toString());
+				switch(state) {
+				case Starting:    
+				case Initializing:
+				case Running:
+					break;
+				default:
+					try {
+						if(pid != null) {
+							int iPid = Integer.parseInt(pid.trim());
+							IProcessInfo processInfo = new ProcessInfo(node, ip, pidName, iPid, reasonStopped, reasonDeallocated);
+							if(p.isFailedInitialization()) {
+								mh.handleProcessFailedInitialization(processInfo);
+							}
+							else if(p.isPreempted()) {
+								mh.handleProcessPreempt(processInfo);
+							}
+							else if(p.isVolunteered()) {
+								mh.handleProcessVolunteered(processInfo);
+							}
+							else {
+								mh.handleProcessDown(processInfo);
 							}
 						}
-						catch(Exception e) {
-							logger.error(location, jobid, e);
-						}
-						break;
 					}
+					catch(Exception e) {
+						logger.error(location, jobid, e);
+					}
+					break;
 				}
 			}
 		}

Modified: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/JdRequestEvent.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/JdRequestEvent.java?rev=1752339&r1=1752338&r2=1752339&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/JdRequestEvent.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/JdRequestEvent.java Tue Jul 12 19:37:56 2016
@@ -18,14 +18,14 @@
 */
 package org.apache.uima.ducc.transport.event;
 
-import org.apache.uima.ducc.transport.event.common.IDuccWorkJob;
+import org.apache.uima.ducc.transport.event.common.IDuccProcessMap;
 import org.apache.uima.ducc.transport.event.jd.IDriverStatusReport;
 
 @SuppressWarnings("serial")
 public class JdRequestEvent extends AbstractDuccJobEvent {
 	
 	private IDriverStatusReport driverStatusReport = null;
-	private IDuccWorkJob job = null;
+	private IDuccProcessMap processMap = null;
 	
 	public JdRequestEvent() {
 		super(EventType.JD_STATE);
@@ -39,11 +39,11 @@ public class JdRequestEvent extends Abst
 		driverStatusReport = value;
 	}
 	
-	public IDuccWorkJob getJob() {
-		return job;
+	public IDuccProcessMap getProcessMap() {
+		return processMap;
 	}
 	 
-	public void setJob(IDuccWorkJob value) {
-		job = value;
+	public void setProcessMap(IDuccProcessMap value) {
+		processMap = value;
 	}
 }

Modified: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessMap.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessMap.java?rev=1752339&r1=1752338&r2=1752339&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessMap.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessMap.java Tue Jul 12 19:37:56 2016
@@ -38,6 +38,12 @@ public class DuccProcessMap extends Tree
 	 */
 	private static final long serialVersionUID = 1L;
 
+	public DuccProcessMap() {
+	}
+	
+	public DuccProcessMap(IDuccProcessMap map) {
+		putAll(map);
+	}
 	
 	public void addProcess(IDuccProcess process) {
 		synchronized(this) {

Modified: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/IDriverStatusReport.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/IDriverStatusReport.java?rev=1752339&r1=1752338&r2=1752339&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/IDriverStatusReport.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/IDriverStatusReport.java Tue Jul 12 19:37:56 2016
@@ -19,7 +19,6 @@
 package org.apache.uima.ducc.transport.event.jd;
 
 import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.uima.ducc.common.jd.files.workitem.IRemoteLocation;
 import org.apache.uima.ducc.common.jd.files.workitem.RemoteLocation;
@@ -100,6 +99,6 @@ public interface IDriverStatusReport {
 	
 	public IDuccProcessWorkItemsReport getDuccProcessWorkItemsMap();
 	
-	public ConcurrentHashMap<RemoteLocation, Long> getOperatingMillisMap();
-	public ConcurrentHashMap<RemoteLocation, Long> getInvestmentMillisMap();
+	public Map<RemoteLocation, Long> getOperatingMillisMap();
+	public Map<RemoteLocation, Long> getInvestmentMillisMap();
 }

Modified: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/JobDriverReport.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/JobDriverReport.java?rev=1752339&r1=1752338&r2=1752339&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/JobDriverReport.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/JobDriverReport.java Tue Jul 12 19:37:56 2016
@@ -23,7 +23,6 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.uima.ducc.common.jd.files.workitem.IRemoteLocation;
 import org.apache.uima.ducc.common.jd.files.workitem.RemoteLocation;
@@ -82,8 +81,8 @@ public class JobDriverReport implements
 	
 	private ArrayList<IWorkItemInfo> listActiveWorkItemInfo = null;
 	
-	private ConcurrentHashMap<RemoteLocation, Long> mapProcessOperatingMillis = null;
-	private ConcurrentHashMap<RemoteLocation, Long> mapProcessInvestmentMillis = null;
+	private Map<RemoteLocation, Long> mapProcessOperatingMillis = null;
+	private Map<RemoteLocation, Long> mapProcessInvestmentMillis = null;
 	
 	private Map<IRemoteLocation, ProcessDeallocationType> processKillMap = null;
 	
@@ -527,9 +526,9 @@ public class JobDriverReport implements
 	}
 
 	@Override
-	public ConcurrentHashMap<RemoteLocation, Long> getOperatingMillisMap() {
+	public synchronized Map<RemoteLocation, Long> getOperatingMillisMap() {
 		if(mapProcessOperatingMillis == null) {
-			mapProcessOperatingMillis = new ConcurrentHashMap<RemoteLocation, Long>();
+			mapProcessOperatingMillis = new HashMap<RemoteLocation, Long>();
 			if(listActiveWorkItemInfo != null) {
 				for(IWorkItemInfo wii: listActiveWorkItemInfo) {
 					String nodeIP = wii.getNodeAddress();
@@ -547,8 +546,8 @@ public class JobDriverReport implements
 	}
 
 	@Override
-	public ConcurrentHashMap<RemoteLocation, Long> getInvestmentMillisMap() {
-		mapProcessInvestmentMillis = new ConcurrentHashMap<RemoteLocation, Long>();
+	public synchronized Map<RemoteLocation, Long> getInvestmentMillisMap() {
+		mapProcessInvestmentMillis = new HashMap<RemoteLocation, Long>();
 		if(listActiveWorkItemInfo != null) {
 			for(IWorkItemInfo wii: listActiveWorkItemInfo) {
 				String nodeIP = wii.getNodeAddress();