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


Reply via email to