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 2014/10/27 21:20:25 UTC

svn commit: r1634675 - 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: Mon Oct 27 20:20:24 2014
New Revision: 1634675

URL: http://svn.apache.org/r1634675
Log:
UIMA-4067 DUCC Orchestrator (OR) reduce publication size relative to Services via compress/outbound and uncompress/inbound

Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/OrchestratorAbbreviatedStateDuccEvent.java
    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/OrchestratorAbbreviatedStateDuccEvent.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/OrchestratorAbbreviatedStateDuccEvent.java?rev=1634675&r1=1634674&r2=1634675&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/OrchestratorAbbreviatedStateDuccEvent.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/OrchestratorAbbreviatedStateDuccEvent.java Mon Oct 27 20:20:24 2014
@@ -18,9 +18,14 @@
 */
 package org.apache.uima.ducc.transport.event;
 
+import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentHashMap;
 
 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.IDuccWorkJob;
@@ -31,7 +36,7 @@ public class OrchestratorAbbreviatedStat
 	private static final long serialVersionUID = 3637372507135841728L;
 
 	private DuccWorkMap workMap;
-	
+	private ConcurrentHashMap<ICommandLine, ArrayList<DuccId>> serviceCmdLineMap = new ConcurrentHashMap<ICommandLine, ArrayList<DuccId>>();
 	
 	public OrchestratorAbbreviatedStateDuccEvent() {
 		super(EventType.ORCHESTRATOR_STATE);
@@ -52,10 +57,46 @@ public class OrchestratorAbbreviatedStat
 	
 	public void setWorkMap(DuccWorkMap workMap) {
 		this.workMap = workMap;
+		compress(this.workMap);
 		abbreviate();
 	}
 	
 	public DuccWorkMap getWorkMap() {
-		return this.workMap;
+		DuccWorkMap value = this.workMap.deepCopy();
+		uncompress(value);
+		return value;
+	}
+	
+	private void compress(DuccWorkMap map) {
+		for(Entry<DuccId, IDuccWork> entry : map.getMap().entrySet()) {
+			IDuccWork dw = entry.getValue();
+			switch(dw.getDuccType()) {
+			case Service:
+				DuccWorkJob dwj = (DuccWorkJob) dw;
+				ICommandLine cl = dwj.getCommandLine();
+				if(!serviceCmdLineMap.containsKey(cl)) {
+					ArrayList<DuccId> list = new ArrayList<DuccId>();
+					serviceCmdLineMap.put(cl, list);
+				}
+				ArrayList<DuccId> list = serviceCmdLineMap.get(cl);
+				list.add(dw.getDuccId());
+				dwj.setCommandLine(null);
+				break;
+			default:
+				break;
+			}
+		}
+	}
+	
+	private void uncompress(DuccWorkMap map) {
+		for(Entry<ICommandLine, ArrayList<DuccId>> entry : serviceCmdLineMap.entrySet()) {
+			ICommandLine cl = entry.getKey();
+			ArrayList<DuccId> list = entry.getValue();
+			for(DuccId duccId : list) {
+				IDuccWork dw = map.findDuccWork(duccId);
+				DuccWorkJob dwj = (DuccWorkJob) dw;
+				dwj.setCommandLine(cl);
+			}
+		}
 	}
 }

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=1634675&r1=1634674&r2=1634675&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 Mon Oct 27 20:20:24 2014
@@ -18,23 +18,68 @@
 */
 package org.apache.uima.ducc.transport.event;
 
+import java.util.ArrayList;
+import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentHashMap;
+
+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;
 
 public class OrchestratorStateDuccEvent extends AbstractDuccEvent  {
 
 	private static final long serialVersionUID = 3637372507135841728L;
 
 	private DuccWorkMap workMap;
+	private ConcurrentHashMap<ICommandLine, ArrayList<DuccId>> serviceCmdLineMap = new ConcurrentHashMap<ICommandLine, ArrayList<DuccId>>();
 	
 	public OrchestratorStateDuccEvent() {
 		super(EventType.ORCHESTRATOR_STATE);
 	}
 	
-	public void setWorkMap(DuccWorkMap workMap) {
-		this.workMap = workMap;
+	public void setWorkMap(DuccWorkMap value) {
+		this.workMap = value.deepCopy();
+		compress(this.workMap);
 	}
 	
 	public DuccWorkMap getWorkMap() {
-		return this.workMap;
+		DuccWorkMap value = this.workMap.deepCopy();
+		uncompress(value);
+		return value;
+	}
+	
+	private void compress(DuccWorkMap map) {
+		for(Entry<DuccId, IDuccWork> entry : map.getMap().entrySet()) {
+			IDuccWork dw = entry.getValue();
+			switch(dw.getDuccType()) {
+			case Service:
+				DuccWorkJob dwj = (DuccWorkJob) dw;
+				ICommandLine cl = dwj.getCommandLine();
+				if(!serviceCmdLineMap.containsKey(cl)) {
+					ArrayList<DuccId> list = new ArrayList<DuccId>();
+					serviceCmdLineMap.put(cl, list);
+				}
+				ArrayList<DuccId> list = serviceCmdLineMap.get(cl);
+				list.add(dw.getDuccId());
+				dwj.setCommandLine(null);
+				break;
+			default:
+				break;
+			}
+		}
+	}
+	
+	private void uncompress(DuccWorkMap map) {
+		for(Entry<ICommandLine, ArrayList<DuccId>> entry : serviceCmdLineMap.entrySet()) {
+			ICommandLine cl = entry.getKey();
+			ArrayList<DuccId> list = entry.getValue();
+			for(DuccId duccId : list) {
+				IDuccWork dw = map.findDuccWork(duccId);
+				DuccWorkJob dwj = (DuccWorkJob) dw;
+				dwj.setCommandLine(cl);
+			}
+		}
 	}
 }