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/12/22 21:45:32 UTC

svn commit: r1647395 - in /uima/sandbox/uima-ducc/trunk: uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/ uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/ uima-ducc-transport/src/main/java/org/apache...

Author: degenaro
Date: Mon Dec 22 20:45:32 2014
New Revision: 1647395

URL: http://svn.apache.org/r1647395
Log:
UIMA-4069 DUCC Job Driver (JD) system classpath

Driver Status Report summary for JD Time(Avg,Max,Min), Done, Error, Dispatch, Retry, Preempt

Added:
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessWorkItemsV1.java   (with props)
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccProcessWorkItemsV1.java   (with props)
Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcess.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessWorkItems.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccProcessWorkItems.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/DuccProcessWorkItemsReport.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/v1/DuccProcessWorkItemsReportV1.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/test/java/org/apache/uima/ducc/transport/test/DuccProcessWorkItemsTest.java

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java?rev=1647395&r1=1647394&r2=1647395&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-orchestrator/src/main/java/org/apache/uima/ducc/orchestrator/StateManager.java Mon Dec 22 20:45:32 2014
@@ -57,6 +57,7 @@ import org.apache.uima.ducc.transport.ev
 import org.apache.uima.ducc.transport.event.common.IDuccProcessMap;
 import org.apache.uima.ducc.transport.event.common.IDuccProcessType.ProcessType;
 import org.apache.uima.ducc.transport.event.common.IDuccProcessWorkItems;
+import org.apache.uima.ducc.transport.event.common.IDuccProcessWorkItemsV1;
 import org.apache.uima.ducc.transport.event.common.IDuccReservationMap;
 import org.apache.uima.ducc.transport.event.common.IDuccState.JobState;
 import org.apache.uima.ducc.transport.event.common.IDuccState.ReservationState;
@@ -370,7 +371,7 @@ public class StateManager {
 						IDuccProcess process = processMap.get(processId);
 						IDuccProcessWorkItems pwi = pwiMap.get(processId);
 						process.setProcessWorkItems(pwi);
-						logger.trace(methodName, job.getDuccId(), "done:"+pwi.getCountDone()+" "+"error:"+pwi.getCountError()+" "+"dispatch:"+pwi.getCountDispatch()+" "+"unassigned:"+pwi.getCountUnassigned()+" "+"lost:"+pwi.getCountLost());
+						logger.trace(methodName, job.getDuccId(), "done:"+pwi.getCountDone()+" "+"error:"+pwi.getCountError()+" "+"dispatch:"+pwi.getCountDispatch());
 					}
 				}
 			}
@@ -385,13 +386,13 @@ public class StateManager {
 		try {
 			IDuccProcessMap processMap = job.getProcessMap();
 			DuccProcessWorkItemsReportV1 pwiReport = (DuccProcessWorkItemsReportV1)jdStatusReport.getDuccProcessWorkItemsMap();
-			ConcurrentHashMap<DuccId, IDuccProcessWorkItems> pwiMap = pwiReport;
+			ConcurrentHashMap<DuccId, IDuccProcessWorkItemsV1> pwiMap = pwiReport;
 			if(pwiMap != null) {
 				Iterator<DuccId> iterator = pwiMap.keySet().iterator();
 				while(iterator.hasNext()) {
 					DuccId processId = iterator.next();
 					IDuccProcess process = processMap.get(processId);
-					IDuccProcessWorkItems pwi = pwiMap.get(processId);
+					IDuccProcessWorkItemsV1 pwi = pwiMap.get(processId);
 					process.setProcessWorkItems(pwi);
 					logger.trace(methodName, job.getDuccId(), "done:"+pwi.getCountDone()+" "+"error:"+pwi.getCountError()+" "+"dispatch:"+pwi.getCountDispatch()+" "+"unassigned:"+pwi.getCountUnassigned()+" "+"lost:"+pwi.getCountLost());
 				}
@@ -412,7 +413,6 @@ public class StateManager {
 				IDuccProcessWorkItemsReport pwiReport = jdStatusReport.getDuccProcessWorkItemsMap();
 				if(pwiReport != null) {
 					IDuccProcessWorkItems pwi = pwiReport.getTotals();
-					
 					DuccWorkPopDriver driver = job.getDriver();
 					IDuccProcessMap processMap = driver.getProcessMap();
 					if(processMap != null) {
@@ -421,7 +421,7 @@ public class StateManager {
 							DuccId processId = iterator.next();
 							IDuccProcess process = processMap.get(processId);
 							process.setProcessWorkItems(pwi);
-							logger.debug(methodName, job.getDuccId(), "done:"+pwi.getCountDone()+" "+"error:"+pwi.getCountError()+" "+"dispatch:"+pwi.getCountDispatch()+" "+"unassigned:"+pwi.getCountUnassigned()+" "+"lost:"+pwi.getCountLost());
+							logger.debug(methodName, job.getDuccId(), "done:"+pwi.getCountDone()+" "+"error:"+pwi.getCountError()+" "+"dispatch:"+pwi.getCountDispatch());
 						}
 					}
 
@@ -443,8 +443,7 @@ public class StateManager {
 		try {
 			DuccProcessWorkItemsReportV1 pwiMap = (DuccProcessWorkItemsReportV1) jdStatusReport.getDuccProcessWorkItemsMap();
 			if(pwiMap != null) {
-				IDuccProcessWorkItems pwi = pwiMap.getTotals();
-				
+				IDuccProcessWorkItemsV1 pwi = pwiMap.getTotals();
 				DuccWorkPopDriver driver = job.getDriver();
 				IDuccProcessMap processMap = driver.getProcessMap();
 				if(processMap != null) {
@@ -456,10 +455,8 @@ public class StateManager {
 						logger.debug(methodName, job.getDuccId(), "done:"+pwi.getCountDone()+" "+"error:"+pwi.getCountError()+" "+"dispatch:"+pwi.getCountDispatch()+" "+"unassigned:"+pwi.getCountUnassigned()+" "+"lost:"+pwi.getCountLost());
 					}
 				}
-				if(jdStatusReport instanceof IDriverStatusReportV1) {
-					IDriverStatusReportV1 jdStatusReportV1 = (IDriverStatusReportV1) jdStatusReport;
-					pwi.setCountUnassigned(jdStatusReportV1.getWorkItemPendingProcessAssignmentCount());
-				}
+				IDriverStatusReportV1 jdStatusReportV1 = (IDriverStatusReportV1) jdStatusReport;
+				pwi.setCountUnassigned(jdStatusReportV1.getWorkItemPendingProcessAssignmentCount());
 			}
 			job.setWiMillisMin(jdStatusReport.getWiMillisMin());
 			job.setWiMillisMax(jdStatusReport.getWiMillisMax());

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcess.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcess.java?rev=1647395&r1=1647394&r2=1647395&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcess.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcess.java Mon Dec 22 20:45:32 2014
@@ -274,15 +274,7 @@ public class DuccProcess implements IDuc
 			retVal = false;
 		}
 		else {
-			if((pwi.getCountDispatch() == 0) 
-			&& (pwi.getCountDone() == 0 )
-			&& (pwi.getCountError() == 0) 
-			&& (pwi.getCountLost() == 0)
-			&& (pwi.getCountPreempt() == 0) 
-			&& (pwi.getCountRetry() == 0)
-			) {
-				retVal = false;
-			}
+			retVal = pwi.isAssignedWork();
 		}
 		return retVal;
 	}

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessWorkItems.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessWorkItems.java?rev=1647395&r1=1647394&r2=1647395&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessWorkItems.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessWorkItems.java Mon Dec 22 20:45:32 2014
@@ -25,19 +25,16 @@ import org.apache.uima.ducc.container.jd
 public class DuccProcessWorkItems implements IDuccProcessWorkItems {
 
 	private static final long serialVersionUID = 1L;
-
-	private long unassigned = 0;
 	
 	private AtomicLong dispatch = new AtomicLong(0);
 	private AtomicLong done = new AtomicLong(0);
 	private AtomicLong error = new AtomicLong(0);
 	private AtomicLong retry = new AtomicLong(0);
-	private AtomicLong lost = new AtomicLong(0);
 	private AtomicLong preempt = new AtomicLong(0);
-	private AtomicLong completedMillisTotal = new AtomicLong(0);
-	private AtomicLong completedMillisAvg = new AtomicLong(0);
-	private AtomicLong completedMillisMax = new AtomicLong(0);
-	private AtomicLong completedMillisMin = new AtomicLong(0);
+	
+	private AtomicLong doneMillisAvg = new AtomicLong(0);
+	private AtomicLong doneMillisMax = new AtomicLong(0);
+	private AtomicLong doneMillisMin = new AtomicLong(0);
 
 	public DuccProcessWorkItems() {	
 	}
@@ -47,198 +44,120 @@ public class DuccProcessWorkItems implem
 		done.set(pi.getDone());
 		error.set(pi.getError());
 		retry.set(pi.getRetry());
-		lost.set(0);
 		preempt.set(pi.getPreempt());
-		completedMillisAvg.set(pi.getAvg());
-		completedMillisMax.set(pi.getMax());
-		completedMillisMin.set(pi.getMin());
-	}
-	
-	public long getCountUnassigned() {
-		return unassigned;
-	}
-
-	public void setCountUnassigned(long count) {
-		unassigned = count;
+		doneMillisAvg.set(pi.getAvg());
+		doneMillisMax.set(pi.getMax());
+		doneMillisMin.set(pi.getMin());
 	}
 	
-	private void setMin(long update) {
-		completedMillisMin.compareAndSet(0, update);
-		while(true) {
-			long min = completedMillisMin.get();
-			if(update < min) {
-				completedMillisMin.compareAndSet(min, update);
-			}
-			else {
-				break;
-			}
+	public boolean isAssignedWork() {
+		boolean retVal = true;
+		if((getCountDispatch() == 0) 
+		&& (getCountDone() == 0 )
+		&& (getCountError() == 0) 
+		&& (getCountPreempt() == 0) 
+		&& (getCountRetry() == 0)
+		) {
+			retVal = false;
 		}
+		return retVal;
 	}
-	
-	private void setMax(long update) {
-		completedMillisMax.compareAndSet(0, update);
-		while(true) {
-			long max = completedMillisMax.get();
-			if(update > max) {
-				completedMillisMax.compareAndSet(max, update);
-			}
-			else {
-				break;
-			}
-		}
-	}
-	
-	public void done(long delta) {
-		done.incrementAndGet();
-		completedMillisTotal.addAndGet(delta);
-		setMin(delta);
-		setMax(delta);
-		undispatch();
-	}
-	
-	public void error() {
-		error.incrementAndGet();
-		undispatch();
-	}
-	
-	public void retry() {
-		retry.incrementAndGet();
-		undispatch();
+
+	@Override
+	public void setCountDispatch(long value) {
+		dispatch.set(value);
 	}
-	
-	public void lost() {
-		lost.incrementAndGet();
+
+	@Override
+	public void setCountDone(long value) {
+		done.set(value);
 	}
-	
-	public void preempt() {
-		preempt.incrementAndGet();
-		undispatch();
+
+	@Override
+	public void setCountError(long value) {
+		error.set(value);
 	}
-	
-	public void dispatch() {
-		dispatch.incrementAndGet();
+
+	@Override
+	public void setCountRetry(long value) {
+		retry.set(value);
 	}
-	
-	private void undispatch() {
-		dispatch.decrementAndGet();
+
+	@Override
+	public void setCountPreempt(long value) {
+		preempt.set(value);
 	}
 
-	
+	@Override
 	public long getCountDispatch() {
-		long retVal = 0;
-		try {
-			retVal = dispatch.get();
-		}
-		catch(Throwable t) {
-		}
-		return retVal;
+		return dispatch.get();
 	}
 
-	
+	@Override
 	public long getCountDone() {
-		long retVal = 0;
-		try {
-			retVal = done.get();
-		}
-		catch(Throwable t) {
-		}
-		return retVal;
+		return done.get();
 	}
 
-	
+	@Override
 	public long getCountError() {
-		long retVal = 0;
-		try {
-			retVal = error.get();
-		}
-		catch(Throwable t) {
-		}
-		return retVal;
+		return error.get();
 	}
 
-	
+	@Override
 	public long getCountRetry() {
-		long retVal = 0;
-		try {
-			retVal = retry.get();
-		}
-		catch(Throwable t) {
-		}
-		return retVal;
-	}
-	
-	
-	public long getCountLost() {
-		long retVal = 0;
-		try {
-			retVal = lost.get();
-		}
-		catch(Throwable t) {
-		}
-		return retVal;
+		return retry.get();
 	}
 
-	
+	@Override
 	public long getCountPreempt() {
-		long retVal = 0;
-		try {
-			retVal = preempt.get();
-		}
-		catch(Throwable t) {
-		}
-		return retVal;
+		return preempt.get();
 	}
-	
-	
-	public long getSecsAvgV1() {
-		long retVal = 0;
-		try {
-			long count = done.get();
-			if(count > 0) {
-				double msecs = (double)completedMillisTotal.get() / (double)count;
-				retVal = (long)(msecs/1000);
-			}
-		}
-		catch(Throwable t) {
-		}
-		return retVal;
+
+	@Override
+	public void setMillisAvg(long value) {
+		doneMillisAvg.set(value);
 	}
-	
+
+	@Override
+	public void setMillisMax(long value) {
+		doneMillisMax.set(value);
+	}
+
+	@Override
+	public void setMillisMin(long value) {
+		doneMillisMin.set(value);
+	}
+	@Override
+	public long getMillisAvg() {
+		return doneMillisAvg.get();
+	}
+
+	@Override
+	public long getMillisMax() {
+		return doneMillisMax.get();
+	}
+
+	@Override
+	public long getMillisMin() {
+		return doneMillisMin.get();
+	}
+
+	@Override
 	public long getSecsAvg() {
-		long retVal = 0;
-		try {
-			double msecs = (double)completedMillisAvg.get();
-			retVal = (long)(msecs/1000);
-		}
-		catch(Throwable t) {
-		}
-		if(retVal == 0) {
-			retVal = getSecsAvgV1();
-		}
-		return retVal;
+		double value = doneMillisAvg.get()/1000.0;
+		return (long) value;
 	}
-	
+
+	@Override
 	public long getSecsMax() {
-		long retVal = 0;
-		try {
-			double msecs = (double)completedMillisMax.get();
-			retVal = (long)(msecs/1000);
-		}
-		catch(Throwable t) {
-		}
-		return retVal;
+		double value = doneMillisMax.get()/1000.0;
+		return (long) value;
 	}
 
-	
+	@Override
 	public long getSecsMin() {
-		long retVal = 0;
-		try {
-			double msecs = (double)completedMillisMin.get();
-			retVal = (long)(msecs/1000);
-		}
-		catch(Throwable t) {
-		}
-		return retVal;
+		double value = doneMillisMin.get()/1000.0;
+		return (long) value;
 	}
-	
+
 }

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessWorkItemsV1.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessWorkItemsV1.java?rev=1647395&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessWorkItemsV1.java (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessWorkItemsV1.java Mon Dec 22 20:45:32 2014
@@ -0,0 +1,316 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.transport.event.common;
+
+import java.util.concurrent.atomic.AtomicLong;
+
+import org.apache.uima.ducc.container.jd.mh.iface.IProcessInfo;
+
+public class DuccProcessWorkItemsV1 implements IDuccProcessWorkItemsV1 {
+
+	private static final long serialVersionUID = 1L;
+
+	private long unassigned = 0;
+	
+	private AtomicLong dispatch = new AtomicLong(0);
+	private AtomicLong done = new AtomicLong(0);
+	private AtomicLong error = new AtomicLong(0);
+	private AtomicLong retry = new AtomicLong(0);
+	private AtomicLong lost = new AtomicLong(0);
+	private AtomicLong preempt = new AtomicLong(0);
+	private AtomicLong completedMillisTotal = new AtomicLong(0);
+	private AtomicLong completedMillisAvg = new AtomicLong(0);
+	private AtomicLong completedMillisMax = new AtomicLong(0);
+	private AtomicLong completedMillisMin = new AtomicLong(0);
+
+	public DuccProcessWorkItemsV1() {	
+	}
+	
+	public DuccProcessWorkItemsV1(IProcessInfo pi) {	
+		dispatch.set(pi.getDispatch());
+		done.set(pi.getDone());
+		error.set(pi.getError());
+		retry.set(pi.getRetry());
+		lost.set(0);
+		preempt.set(pi.getPreempt());
+		completedMillisAvg.set(pi.getAvg());
+		completedMillisMax.set(pi.getMax());
+		completedMillisMin.set(pi.getMin());
+	}
+	
+	public boolean isAssignedWork() {
+		boolean retVal = true;
+		if((getCountDispatch() == 0) 
+		&& (getCountDone() == 0 )
+		&& (getCountError() == 0) 
+		&& (getCountPreempt() == 0) 
+		&& (getCountRetry() == 0)
+		&& (getCountLost() == 0)
+		) {
+			retVal = false;
+		}
+		return retVal;
+	}
+	
+	public long getCountUnassigned() {
+		return unassigned;
+	}
+
+	public void setCountUnassigned(long count) {
+		unassigned = count;
+	}
+	
+	private void setMin(long update) {
+		completedMillisMin.compareAndSet(0, update);
+		while(true) {
+			long min = completedMillisMin.get();
+			if(update < min) {
+				completedMillisMin.compareAndSet(min, update);
+			}
+			else {
+				break;
+			}
+		}
+	}
+	
+	private void setMax(long update) {
+		completedMillisMax.compareAndSet(0, update);
+		while(true) {
+			long max = completedMillisMax.get();
+			if(update > max) {
+				completedMillisMax.compareAndSet(max, update);
+			}
+			else {
+				break;
+			}
+		}
+	}
+	
+	public void done(long delta) {
+		done.incrementAndGet();
+		completedMillisTotal.addAndGet(delta);
+		setMin(delta);
+		setMax(delta);
+		undispatch();
+	}
+	
+	public void error() {
+		error.incrementAndGet();
+		undispatch();
+	}
+	
+	public void retry() {
+		retry.incrementAndGet();
+		undispatch();
+	}
+	
+	public void lost() {
+		lost.incrementAndGet();
+	}
+	
+	public void preempt() {
+		preempt.incrementAndGet();
+		undispatch();
+	}
+	
+	public void dispatch() {
+		dispatch.incrementAndGet();
+	}
+	
+	private void undispatch() {
+		dispatch.decrementAndGet();
+	}
+
+	
+	public long getCountDispatch() {
+		long retVal = 0;
+		try {
+			retVal = dispatch.get();
+		}
+		catch(Throwable t) {
+		}
+		return retVal;
+	}
+
+	
+	public long getCountDone() {
+		long retVal = 0;
+		try {
+			retVal = done.get();
+		}
+		catch(Throwable t) {
+		}
+		return retVal;
+	}
+
+	
+	public long getCountError() {
+		long retVal = 0;
+		try {
+			retVal = error.get();
+		}
+		catch(Throwable t) {
+		}
+		return retVal;
+	}
+
+	
+	public long getCountRetry() {
+		long retVal = 0;
+		try {
+			retVal = retry.get();
+		}
+		catch(Throwable t) {
+		}
+		return retVal;
+	}
+	
+	
+	public long getCountLost() {
+		long retVal = 0;
+		try {
+			retVal = lost.get();
+		}
+		catch(Throwable t) {
+		}
+		return retVal;
+	}
+
+	
+	public long getCountPreempt() {
+		long retVal = 0;
+		try {
+			retVal = preempt.get();
+		}
+		catch(Throwable t) {
+		}
+		return retVal;
+	}
+	
+	
+	public long getSecsAvgV1() {
+		long retVal = 0;
+		try {
+			long count = done.get();
+			if(count > 0) {
+				double msecs = (double)completedMillisTotal.get() / (double)count;
+				retVal = (long)(msecs/1000);
+			}
+		}
+		catch(Throwable t) {
+		}
+		return retVal;
+	}
+	
+	public long getSecsAvg() {
+		long retVal = 0;
+		try {
+			double msecs = (double)completedMillisAvg.get();
+			retVal = (long)(msecs/1000);
+		}
+		catch(Throwable t) {
+		}
+		if(retVal == 0) {
+			retVal = getSecsAvgV1();
+		}
+		return retVal;
+	}
+	
+	public long getSecsMax() {
+		long retVal = 0;
+		try {
+			double msecs = (double)completedMillisMax.get();
+			retVal = (long)(msecs/1000);
+		}
+		catch(Throwable t) {
+		}
+		return retVal;
+	}
+
+	
+	public long getSecsMin() {
+		long retVal = 0;
+		try {
+			double msecs = (double)completedMillisMin.get();
+			retVal = (long)(msecs/1000);
+		}
+		catch(Throwable t) {
+		}
+		return retVal;
+	}
+
+	@Override
+	public void setCountDispatch(long value) {
+		//V2
+	}
+
+	@Override
+	public void setCountDone(long value) {
+		// V2
+	}
+
+	@Override
+	public void setCountError(long value) {
+		//V2
+	}
+
+	@Override
+	public void setCountRetry(long value) {
+		//V2
+	}
+
+	@Override
+	public void setCountPreempt(long value) {
+		//V2
+	}
+
+	@Override
+	public void setMillisAvg(long value) {
+		//V2
+	}
+
+	@Override
+	public void setMillisMax(long value) {
+		//V2
+	}
+
+	@Override
+	public void setMillisMin(long value) {
+		//V2
+	}
+
+	@Override
+	public long getMillisAvg() {
+		//V2
+		return 0;
+	}
+
+	@Override
+	public long getMillisMax() {
+		//V2
+		return 0;
+	}
+
+	@Override
+	public long getMillisMin() {
+		//V2
+		return 0;
+	}
+	
+}

Propchange: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessWorkItemsV1.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/DuccProcessWorkItemsV1.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccProcessWorkItems.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccProcessWorkItems.java?rev=1647395&r1=1647394&r2=1647395&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccProcessWorkItems.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccProcessWorkItems.java Mon Dec 22 20:45:32 2014
@@ -21,25 +21,31 @@ package org.apache.uima.ducc.transport.e
 import java.io.Serializable;
 
 public interface IDuccProcessWorkItems extends Serializable {
+
+	public boolean isAssignedWork();
 	
-	public long getCountUnassigned();	
-	public void setCountUnassigned(long count);
+	public void setCountDispatch(long value);
+	public void setCountDone(long value);
+	public void setCountError(long value);
+	public void setCountRetry(long value);
+	public void setCountPreempt(long value);
 	
 	public long getCountDispatch();
 	public long getCountDone();
 	public long getCountError();
 	public long getCountRetry();
-	public long getCountLost();
 	public long getCountPreempt();
 	
+	public void setMillisAvg(long value);
+	public void setMillisMax(long value);
+	public void setMillisMin(long value);
+	
+	public long getMillisAvg();
+	public long getMillisMax();
+	public long getMillisMin();
+	
 	public long getSecsAvg();
 	public long getSecsMax();
 	public long getSecsMin();
 	
-	public void dispatch();
-	public void done(long millis);
-	public void error();
-	public void retry();
-	public void lost();
-	public void preempt();
 }

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccProcessWorkItemsV1.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccProcessWorkItemsV1.java?rev=1647395&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccProcessWorkItemsV1.java (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccProcessWorkItemsV1.java Mon Dec 22 20:45:32 2014
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.transport.event.common;
+
+import java.io.Serializable;
+
+public interface IDuccProcessWorkItemsV1 extends IDuccProcessWorkItems, Serializable {
+	
+	public long getCountUnassigned();	
+	public void setCountUnassigned(long count);
+	
+	public long getCountLost();
+
+	public void dispatch();
+	public void done(long millis);
+	public void error();
+	public void retry();
+	public void lost();
+	public void preempt();
+}

Propchange: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccProcessWorkItemsV1.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/IDuccProcessWorkItemsV1.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/DuccProcessWorkItemsReport.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/DuccProcessWorkItemsReport.java?rev=1647395&r1=1647394&r2=1647395&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/DuccProcessWorkItemsReport.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/DuccProcessWorkItemsReport.java Mon Dec 22 20:45:32 2014
@@ -21,12 +21,16 @@ package org.apache.uima.ducc.transport.e
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.uima.ducc.common.utils.id.DuccId;
+import org.apache.uima.ducc.container.common.logger.IComponent;
+import org.apache.uima.ducc.container.common.logger.Logger;
 import org.apache.uima.ducc.transport.event.common.DuccProcessWorkItems;
 import org.apache.uima.ducc.transport.event.common.IDuccProcessWorkItems;
 
 public class DuccProcessWorkItemsReport implements IDuccProcessWorkItemsReport {
 	
 	private static final long serialVersionUID = 1L;
+
+	private static Logger logger = Logger.getLogger(DuccProcessWorkItemsReport.class, IComponent.Id.JD.name());
 	
 	private ConcurrentHashMap<DuccId, IDuccProcessWorkItems> map = new ConcurrentHashMap<DuccId, IDuccProcessWorkItems>();
 	private IDuccProcessWorkItems totals = new DuccProcessWorkItems();
@@ -42,7 +46,67 @@ public class DuccProcessWorkItemsReport
 	
 	@Override
 	public void accum(DuccId key, IDuccProcessWorkItems value) {
-		//TODO
+		String location = "accum";
+		long dispatch = totals.getCountDispatch();
+		long done = totals.getCountDone();
+		long error = totals.getCountError();
+		long preempt = totals.getCountPreempt();
+		long retry = totals.getCountRetry();
+		// dispatch
+		long newDispatch = dispatch+value.getCountDispatch();
+		totals.setCountDispatch(newDispatch);
+		// done
+		long newDone = done+value.getCountDone();
+		totals.setCountDone(newDone);
+		// error
+		long newError = error+value.getCountError();
+		totals.setCountError(newError);
+		// preempt
+		long newPreempt = preempt+value.getCountPreempt();
+		totals.setCountPreempt(newPreempt);
+		// retry
+		long newRetry = retry+value.getCountRetry();
+		totals.setCountRetry(newRetry);
+		// avg
+		long cnt1 = totals.getCountDone();
+		long avg1 = totals.getMillisAvg();
+		long cnt2 = value.getCountDone();
+		long avg2 = value.getMillisAvg();
+		double top = (avg1*cnt1)+(avg2*cnt2);
+		double bot = (cnt1+cnt2);
+		long avg = (long)(top/bot);
+		totals.setMillisAvg(avg);
+		// max
+		long max = totals.getMillisMax();
+		long maxCandidate = value.getMillisMax();
+		logger.trace(location, null, "max="+max+" "+"maxCandidate="+maxCandidate);
+		if(max > 0) {
+			if(maxCandidate > 0) {
+				if(maxCandidate > max) {
+					max = maxCandidate;
+				}
+			}
+		}
+		else {
+			max = maxCandidate;
+		}
+		totals.setMillisMax(max);
+		// min
+		long min = totals.getMillisMin();
+		long minCandidate = value.getMillisMin();
+		logger.trace(location, null, "min="+min+" "+"minCandidate="+minCandidate);
+		if(min > 0) {
+			if(minCandidate > 0) {
+				if(minCandidate < min) {
+					min = minCandidate;
+				}
+			}
+		}
+		else {
+			min = minCandidate;
+		}
+		totals.setMillisMin(min);
+		// process
 		map.put(key, value);
 	}
 

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/v1/DuccProcessWorkItemsReportV1.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/v1/DuccProcessWorkItemsReportV1.java?rev=1647395&r1=1647394&r2=1647395&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/v1/DuccProcessWorkItemsReportV1.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/v1/DuccProcessWorkItemsReportV1.java Mon Dec 22 20:45:32 2014
@@ -21,23 +21,23 @@ package org.apache.uima.ducc.transport.e
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.uima.ducc.common.utils.id.DuccId;
-import org.apache.uima.ducc.transport.event.common.DuccProcessWorkItems;
-import org.apache.uima.ducc.transport.event.common.IDuccProcessWorkItems;
+import org.apache.uima.ducc.transport.event.common.DuccProcessWorkItemsV1;
+import org.apache.uima.ducc.transport.event.common.IDuccProcessWorkItemsV1;
 
-public class DuccProcessWorkItemsReportV1 extends ConcurrentHashMap<DuccId, IDuccProcessWorkItems> {
+public class DuccProcessWorkItemsReportV1 extends ConcurrentHashMap<DuccId, IDuccProcessWorkItemsV1> {
 
 	private static final long serialVersionUID = 1L;
 	
-	private IDuccProcessWorkItems totals = new DuccProcessWorkItems();
+	private IDuccProcessWorkItemsV1 totals = new DuccProcessWorkItemsV1();
 	
-	public IDuccProcessWorkItems getTotals() {
+	public IDuccProcessWorkItemsV1 getTotals() {
 		return totals;
 	}
 	
-	private IDuccProcessWorkItems get(DuccId duccId) {
-		IDuccProcessWorkItems retVal = super.get(duccId);
+	private IDuccProcessWorkItemsV1 get(DuccId duccId) {
+		IDuccProcessWorkItemsV1 retVal = (IDuccProcessWorkItemsV1) super.get(duccId);
 		if(retVal == null) {
-			retVal = new DuccProcessWorkItems();
+			retVal = new DuccProcessWorkItemsV1();
 			super.put(duccId, retVal);
 		}
 		return retVal;

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/test/java/org/apache/uima/ducc/transport/test/DuccProcessWorkItemsTest.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/test/java/org/apache/uima/ducc/transport/test/DuccProcessWorkItemsTest.java?rev=1647395&r1=1647394&r2=1647395&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/test/java/org/apache/uima/ducc/transport/test/DuccProcessWorkItemsTest.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/test/java/org/apache/uima/ducc/transport/test/DuccProcessWorkItemsTest.java Mon Dec 22 20:45:32 2014
@@ -18,9 +18,9 @@
 */
 package org.apache.uima.ducc.transport.test;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.fail;
 
-import org.apache.uima.ducc.transport.event.common.DuccProcessWorkItems;
+import org.apache.uima.ducc.transport.event.common.DuccProcessWorkItemsV1;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
@@ -45,7 +45,7 @@ public class DuccProcessWorkItemsTest {
 	public void tearDown() throws Exception {
 	}
 	
-	private static void stats(DuccProcessWorkItems pwi) {
+	private static void stats(DuccProcessWorkItemsV1 pwi) {
 		System.out.println("     done: "+pwi.getCountDone());
 		System.out.println("    error: "+pwi.getCountError());
 		System.out.println("    retry: "+pwi.getCountRetry());
@@ -55,17 +55,17 @@ public class DuccProcessWorkItemsTest {
 		System.out.println("max(secs): "+pwi.getSecsMax());
 	}
 	
-	private static void done(DuccProcessWorkItems pwi, int msecs) {
+	private static void done(DuccProcessWorkItemsV1 pwi, int msecs) {
 		pwi.dispatch();
 		pwi.done(msecs);
 	}
 	
-	private static void error(DuccProcessWorkItems pwi) {
+	private static void error(DuccProcessWorkItemsV1 pwi) {
 		pwi.dispatch();
 		pwi.error();
 	}
 	
-	private static void retry(DuccProcessWorkItems pwi) {
+	private static void retry(DuccProcessWorkItemsV1 pwi) {
 		pwi.dispatch();
 		pwi.retry();
 	}
@@ -73,7 +73,7 @@ public class DuccProcessWorkItemsTest {
 	@Test
 	public void test() {
 		try {
-			DuccProcessWorkItems pwi = new DuccProcessWorkItems();
+			DuccProcessWorkItemsV1 pwi = new DuccProcessWorkItemsV1();
 			pwi.dispatch();
 			done(pwi,30000);
 			done(pwi,40000);