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/05/20 18:04:09 UTC

svn commit: r1680615 - in /uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event: OrchestratorAbbreviatedStateDuccEvent.java OrchestratorStateDuccEvent.java

Author: degenaro
Date: Wed May 20 16:04:09 2015
New Revision: 1680615

URL: http://svn.apache.org/r1680615
Log:
UIMA-4394 DUCC Orchestrator (OR) reduce publication size comprising command line & especially classpath

Removed:
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/OrchestratorAbbreviatedStateDuccEvent.java
Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/OrchestratorStateDuccEvent.java

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/OrchestratorStateDuccEvent.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/OrchestratorStateDuccEvent.java?rev=1680615&r1=1680614&r2=1680615&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/OrchestratorStateDuccEvent.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/OrchestratorStateDuccEvent.java Wed May 20 16:04:09 2015
@@ -18,82 +18,112 @@
 */
 package org.apache.uima.ducc.transport.event;
 
-import java.util.Map.Entry;
-import java.util.concurrent.ConcurrentHashMap;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectOutputStream;
 
+import org.apache.uima.ducc.common.utils.DuccLogger;
 import org.apache.uima.ducc.common.utils.id.DuccId;
-import org.apache.uima.ducc.transport.cmdline.ICommandLine;
-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.IDuccWork;
+import org.apache.uima.ducc.transport.event.common.IDuccWorkExecutable;
+import org.apache.uima.ducc.transport.event.common.IDuccWorkJob;
+import org.apache.uima.ducc.transport.event.common.IDuccWorkService;
 
 public class OrchestratorStateDuccEvent extends AbstractDuccEvent  {
-
-	private static final long serialVersionUID = 3637372507135841728L;
-
-	private DuccWorkMap workMap;
-	private ConcurrentHashMap<String, ICommandLine> serviceCmdLineMap = new ConcurrentHashMap<String, ICommandLine>();
 	
+	private static final long serialVersionUID = 2L;
+	
+	private static DuccId jobid = null;
+	private static DuccLogger logger = null;
+	
+	private DuccWorkMap workMap = null;
+
 	public OrchestratorStateDuccEvent() {
 		super(EventType.ORCHESTRATOR_STATE);
 	}
 	
+	public OrchestratorStateDuccEvent(DuccLogger duccLogger) {
+		super(EventType.ORCHESTRATOR_STATE);
+		logger = duccLogger;
+	}
+	
 	public void setWorkMap(DuccWorkMap value) {
 		this.workMap = value.deepCopy();
-		//compress(this.workMap);        // UIMA-4258, can't yet compress because of DUCC_SERVICE_INSTANCE
+		trim();
 	}
 	
 	public DuccWorkMap getWorkMap() {
 		DuccWorkMap value = this.workMap.deepCopy();
-		//uncompress(value);             // UIMA-4258, can't yet compress because of DUCC_SERVICE_INSTANCE
 		return value;
 	}
 	
-	@SuppressWarnings("unused")
-	private void compress(DuccWorkMap map) {
-		if(map != null) {
-			if(serviceCmdLineMap != null) {
-				for(Entry<DuccId, IDuccWork> entry : map.getMap().entrySet()) {
-					IDuccWork dw = entry.getValue();
-					switch(dw.getDuccType()) {
-					case Service:
-						DuccWorkJob dwj = (DuccWorkJob) dw;
-						String sid = dwj.getServiceId();
-						if(sid != null) {
-							ICommandLine cl = dwj.getCommandLine();
-							if(cl != null) {
-								serviceCmdLineMap.put(sid, cl);
-							}
-						}
-					default:
-						break;
-					}
-				}
+	private int sizeOf(Object object) {
+		String location = "sizeOf";
+		int retVal = 0;
+		try {
+			if(object != null) {
+				ByteArrayOutputStream bos = new ByteArrayOutputStream();
+			    ObjectOutputStream os = new ObjectOutputStream(bos);
+			    os.writeObject(object);
+			    String string = bos.toString();
+			    os.close();
+			    retVal = string.length();
 			}
 		}
+		catch(Exception e) {
+			if(logger != null) {
+				logger.error(location, jobid, e);
+			}
+			else {
+				e.printStackTrace();
+			}
+		}
+		return retVal;
 	}
 	
-	@SuppressWarnings("unused")
-	private void uncompress(DuccWorkMap map) {
-		if(map != null) {
-			if(serviceCmdLineMap != null) {
-				for(Entry<DuccId, IDuccWork> entry : map.getMap().entrySet()) {
-					IDuccWork dw = entry.getValue();
-					switch(dw.getDuccType()) {
-					case Service:
-						DuccWorkJob dwj = (DuccWorkJob) dw;
-						String sid = dwj.getServiceId();
-						if(sid != null) {
-							ICommandLine cl = serviceCmdLineMap.get(sid);
-							if(cl != null) {
-								dwj.setCommandLine(cl);
-							}
-						}
-					default:
-						break;
-					}
+	private void trim() {
+		String location = "trim";
+		int bytesTrimmed = 0;
+		for(DuccId duccId : workMap.keySet()) {
+			IDuccWork dw = (IDuccWork) workMap.get(duccId);
+			if(dw instanceof IDuccWorkJob) {
+				IDuccWorkJob job = (IDuccWorkJob) dw;
+				if(logger != null) {
+					int s1 = sizeOf(job.getCommandLine());
+					int s2 = sizeOf(job.getDriver().getCommandLine());
+					bytesTrimmed = bytesTrimmed+(s1+s2);
+					String message = "jd:"+s1+" jp:"+s2+" total:"+bytesTrimmed;
+					logger.trace(location, duccId, message);
+				}
+				job.setCommandLine(null);
+				job.getDriver().setCommandLine(null);
+			}
+			else if(dw instanceof IDuccWorkService) {
+				IDuccWorkJob service = (IDuccWorkJob) dw;
+				if(logger != null) {
+					int s1 = 0;
+					int s2 = sizeOf(service.getCommandLine());
+					bytesTrimmed = bytesTrimmed+(s1+s2);
+					String message = "sp:"+s2+" total:"+bytesTrimmed;
+					logger.trace(location, duccId, message);
+				}
+				service.setCommandLine(null);
+			}
+			else if(dw instanceof IDuccWorkExecutable) {
+				IDuccWorkExecutable dwe = (IDuccWorkExecutable) dw;
+				if(logger != null) {
+					int s1 = sizeOf(dwe.getCommandLine());
+					int s2 = 0;
+					bytesTrimmed = bytesTrimmed+(s1+s2);
+					String message = "mr:"+s1+" total:"+bytesTrimmed;
+					logger.trace(location, duccId, message);
 				}
+				dwe.setCommandLine(null);
 			}
 		}
+		if(logger != null) {
+			String message = "total:"+bytesTrimmed;
+			logger.debug(location, jobid, message);
+		}
 	}
 }