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);
+ }
+ }
}
}