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/11/17 22:35:09 UTC

svn commit: r1640231 - in /uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport: configuration/jd/ configuration/jd/iface/ event/jd/

Author: degenaro
Date: Mon Nov 17 21:35:09 2014
New Revision: 1640231

URL: http://svn.apache.org/r1640231
Log:
UIMA-4069 Redesign of JD toward the main goal of classpath separation for container (system) code.

JobDriverReport (incomplete).

Added:
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/JobDriverReport.java   (with props)
Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jd/JobDriverComponent.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jd/JobDriverConfiguration.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jd/iface/IJobDriverComponent.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/DriverStatusReport.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/IDriverStatusReport.java

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jd/JobDriverComponent.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jd/JobDriverComponent.java?rev=1640231&r1=1640230&r2=1640231&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jd/JobDriverComponent.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jd/JobDriverComponent.java Mon Nov 17 21:35:09 2014
@@ -19,25 +19,102 @@
 
 package org.apache.uima.ducc.transport.configuration.jd;
 
+import java.util.ArrayList;
+import java.util.Properties;
+import java.util.concurrent.atomic.AtomicInteger;
+
 import org.apache.camel.CamelContext;
 import org.apache.uima.ducc.common.component.AbstractDuccComponent;
+import org.apache.uima.ducc.common.config.SystemPropertiesHelper;
+import org.apache.uima.ducc.common.config.SystemPropertiesHelper.Name;
 import org.apache.uima.ducc.common.utils.DuccLogger;
+import org.apache.uima.ducc.common.utils.DuccLoggerComponents;
+import org.apache.uima.ducc.common.utils.id.DuccId;
+import org.apache.uima.ducc.container.jd.JobDriver;
+import org.apache.uima.ducc.container.jd.mh.IMessageHandler;
+import org.apache.uima.ducc.container.jd.mh.iface.IOperatingInfo;
 import org.apache.uima.ducc.transport.configuration.jd.iface.IJobDriverComponent;
+import org.apache.uima.ducc.transport.event.JdStateDuccEvent;
+import org.apache.uima.ducc.transport.event.jd.IDriverStatusReport;
+import org.apache.uima.ducc.transport.event.jd.JobDriverReport;
 
 public class JobDriverComponent extends AbstractDuccComponent
 implements IJobDriverComponent {
-
+	
+	private static DuccLogger logger = DuccLoggerComponents.getJdOut(JobDriverComponent.class.getName());
+	private static DuccId jobid = null;
+	
 	private JobDriverConfiguration configuration;
 	
-	public JobDriverComponent(String componentName, CamelContext ctx,JobDriverConfiguration jdc) {
+	public JobDriverComponent(String componentName, CamelContext ctx, JobDriverConfiguration jdc) {
 		super(componentName,ctx);
 		this.configuration = jdc;
+		verifySystemProperties();
+		createInstance();
 	}
-
+	
+	private void verifySystemProperties() {
+		String location = "verifySystemProperties";
+		Properties properties = System.getProperties();
+		ArrayList<String> missing = new ArrayList<String>();
+		for(Name name : SystemPropertiesHelper.Name.values()) {
+			String key = name.name();
+			if(properties.containsKey(key)) {
+				String value = properties.getProperty(key);
+				String text = key+"="+value;
+				logger.info(location, jobid, text);
+			}
+			else {
+				if(name.isRequired()) {
+					missing.add(name.name());
+					String text = key+" is missing.";
+					logger.error(location, jobid, text);
+				}
+			}
+		}
+		if(missing.size() > 0) {
+			throw new RuntimeException("Missing System Properties: "+missing.toString());
+		}
+	}
+	
+	private void createInstance() {
+		String location = "createInstance";
+		try {
+			JobDriver.createInstance();
+			int total = JobDriver.getInstance().getCasManager().getCasManagerStats().getCrTotal();
+			logger.info(location, jobid, "total: "+total);
+		}
+		catch(Exception e) {
+			logger.error(location, jobid, e);
+			throw new RuntimeException(e);
+		}
+	}
+	
+	public JobDriverConfiguration getJobDriverConfiguration() {
+		return configuration;
+	}
+	
 	@Override
 	public DuccLogger getLogger() {
-		// TODO Auto-generated method stub
-		return null;
+		return logger;
+	}
+	
+	private AtomicInteger getStateReqNo = new AtomicInteger(0);
+	
+	public JdStateDuccEvent getState() {
+		String location = "getState";
+		JdStateDuccEvent state = new JdStateDuccEvent();
+		try {
+			IMessageHandler mh = JobDriver.getInstance().getMessageHandler();
+			IOperatingInfo oi = mh.handleGetOperatingInfo();
+			IDriverStatusReport driverStatusReport = new JobDriverReport(oi);
+			state.setState(driverStatusReport);
+			logger.debug(location, jobid, "reqNo: "+getStateReqNo.incrementAndGet());
+		}
+		catch(Exception e) {
+			logger.error(location, jobid, e);
+		}
+		return state;
 	}
 
 }

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jd/JobDriverConfiguration.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jd/JobDriverConfiguration.java?rev=1640231&r1=1640230&r2=1640231&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jd/JobDriverConfiguration.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jd/JobDriverConfiguration.java Mon Nov 17 21:35:09 2014
@@ -24,17 +24,18 @@ import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.jetty.JettyHttpComponent;
 import org.apache.uima.ducc.common.config.CommonConfiguration;
+import org.apache.uima.ducc.common.utils.DuccLogger;
+import org.apache.uima.ducc.common.utils.DuccLoggerComponents;
 import org.apache.uima.ducc.common.utils.Utils;
+import org.apache.uima.ducc.common.utils.id.DuccId;
 import org.apache.uima.ducc.transport.DuccTransportConfiguration;
 import org.apache.uima.ducc.transport.configuration.jd.iface.IJobDriverComponent;
 import org.apache.uima.ducc.transport.event.JdStateDuccEvent;
-import org.apache.uima.ducc.transport.event.delegate.DuccEventDelegateListener;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 
-
 	/**
 	 * A {@link JobDriverConfiguration} to configure JobDriver component. Depends on 
 	 * properties loaded by a main program into System properties. 
@@ -43,6 +44,10 @@ import org.springframework.context.annot
 	@Configuration
 	@Import({DuccTransportConfiguration.class,CommonConfiguration.class})
 	public class JobDriverConfiguration {
+		
+		private static DuccLogger logger = DuccLoggerComponents.getJdOut(JobDriverConfiguration.class.getName());
+		private static DuccId jobid = null;
+		
 		//	use Spring magic to autowire (instantiate and bind) CommonConfiguration to a local variable
 		@Autowired CommonConfiguration common;
 		//	use Spring magic to autowire (instantiate and bind) DuccTransportConfiguration to a local variable
@@ -127,9 +132,9 @@ import org.springframework.context.annot
 			}
 			public void process(Exchange exchange) throws Exception {
 				// Fetch new state from Dispatched Job
-//				JdStateDuccEvent sse = jdc.getState();
+				JdStateDuccEvent sse = jdc.getState();
 				//	Add the state object to the Message
-//				exchange.getIn().setBody(sse);
+				exchange.getIn().setBody(sse);
 			}
 			
 		}
@@ -144,6 +149,7 @@ import org.springframework.context.annot
 		 */
 		@Bean 
 		public JobDriverComponent jobDriver() throws Exception {
+			String location = "jobDriver";
 			JobDriverComponent jdc = new JobDriverComponent("JobDriver", common.camelContext(), this);
 	        //	Instantiate delegate listener to receive incoming messages. 
 	        JobDriverEventListener delegateListener = this.jobDriverDelegateListener(jdc);
@@ -156,6 +162,7 @@ import org.springframework.context.annot
 			int port = Utils.findFreePort();
 			String jdUniqueId = "jdApp";
 			jdc.getContext().addRoutes(this.routeBuilderForJpIncomingRequests(jdc.getContext(), delegateListener, port, jdUniqueId));
+			logger.debug(location, jobid, "endpoint: "+common.jdStateUpdateEndpoint+" "+"rate: "+common.jdStatePublishRate);
 			jdc.getContext().addRoutes(this.routeBuilderForJdStatePost(jdc, common.jdStateUpdateEndpoint, Integer.parseInt(common.jdStatePublishRate)));
 			return jdc;
 		}

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jd/iface/IJobDriverComponent.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jd/iface/IJobDriverComponent.java?rev=1640231&r1=1640230&r2=1640231&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jd/iface/IJobDriverComponent.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jd/iface/IJobDriverComponent.java Mon Nov 17 21:35:09 2014
@@ -19,6 +19,8 @@
 
 package org.apache.uima.ducc.transport.configuration.jd.iface;
 
-public interface IJobDriverComponent {
+import org.apache.uima.ducc.transport.event.JdStateDuccEvent;
 
+public interface IJobDriverComponent {
+	public JdStateDuccEvent getState();
 }

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/DriverStatusReport.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/DriverStatusReport.java?rev=1640231&r1=1640230&r2=1640231&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/DriverStatusReport.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/DriverStatusReport.java Mon Nov 17 21:35:09 2014
@@ -40,9 +40,9 @@ import org.apache.uima.ducc.transport.ev
 import org.apache.uima.ducc.transport.event.common.Util;
 import org.apache.uima.ducc.transport.event.jd.IDriverState.DriverState;
 
-
-@SuppressWarnings("serial")
 public class DriverStatusReport implements Serializable, IDriverStatusReport {
+
+	private static final long serialVersionUID = 100L;
 	
 	private static DuccLogger duccOut = DuccLoggerComponents.getJdOut(DriverStatusReport.class.getName());
 	private static DuccId jobid = null;
@@ -116,6 +116,11 @@ public class DriverStatusReport implemen
 		setDuccId(duccId);
 	}
 	
+	@Override
+	public long getVersion() {
+		return serialVersionUID;
+	}
+	
 	/*
 	 * DuccId
 	 */
@@ -792,4 +797,5 @@ public class DriverStatusReport implemen
 	public void setOperatingMillisMap(ConcurrentHashMap<RemoteLocation,Long> value) {
 		operatingMillisMap = value;
 	}
+
 }

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/IDriverStatusReport.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/IDriverStatusReport.java?rev=1640231&r1=1640230&r2=1640231&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/IDriverStatusReport.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/IDriverStatusReport.java Mon Nov 17 21:35:09 2014
@@ -31,6 +31,8 @@ import org.apache.uima.ducc.transport.ev
 
 public interface IDriverStatusReport {
 
+	public long getVersion();
+	
 	public DuccId getDuccId();
 	public String getLogReport();
 	
@@ -41,21 +43,37 @@ public interface IDriverStatusReport {
 	public int getWorkItemsRetry();
 	public int getWorkItemsDispatched();
 	public int getWorkItemsPreempted();
+	
+	@Deprecated
 	public int getWorkItemsLost();
 	
+	@Deprecated
 	public int getWorkItemPendingProcessAssignmentCount();
 	
+	// min of finished & running
 	public long getWiMillisMin();
+	
+	// max of finished & running
 	public long getWiMillisMax();
+	
+	// avg of finished
 	public long getWiMillisAvg();
 	
+	// min of running
 	public long getWiMillisOperatingLeast();
+	
+	// max of finished
 	public long getWiMillisCompletedMost();
 	
+	// tod most recent started work item
 	public long getMostRecentStart();
 	
+	// true if CR not yet exhausted
 	public boolean isPending();
+	
+	@Deprecated
 	public boolean isWorkItemPendingProcessAssignment();
+	
 	public boolean isKillJob();
 	
 	public boolean isOperating(String nodeIP, String PID);
@@ -75,7 +93,11 @@ public interface IDriverStatusReport {
 	
 	public DuccProcessWorkItemsMap getDuccProcessWorkItemsMap();
 	
-	public ConcurrentHashMap<RemoteLocation, Long>getOperatingMillisMap();
+	public ConcurrentHashMap<RemoteLocation, Long> getOperatingMillisMap();
+	
+	@Deprecated
 	public ConcurrentHashMap<Integer,DuccId> getLimboMap();
+	
+	@Deprecated
 	public ConcurrentHashMap<String,DuccId> getCasQueuedMap();
 }

Added: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/JobDriverReport.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/JobDriverReport.java?rev=1640231&view=auto
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/JobDriverReport.java (added)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/jd/JobDriverReport.java Mon Nov 17 21:35:09 2014
@@ -0,0 +1,387 @@
+/*
+ * 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.jd;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.uima.ducc.common.jd.files.workitem.RemoteLocation;
+import org.apache.uima.ducc.common.utils.id.DuccId;
+import org.apache.uima.ducc.container.common.Util;
+import org.apache.uima.ducc.container.jd.mh.iface.IOperatingInfo;
+import org.apache.uima.ducc.container.jd.mh.iface.IWorkItemInfo;
+import org.apache.uima.ducc.transport.event.common.IDuccCompletionType.JobCompletionType;
+import org.apache.uima.ducc.transport.event.common.IDuccPerWorkItemStatistics;
+import org.apache.uima.ducc.transport.event.common.IDuccUimaDeploymentDescriptor;
+import org.apache.uima.ducc.transport.event.common.IRationale;
+import org.apache.uima.ducc.transport.event.jd.IDriverState.DriverState;
+
+public class JobDriverReport implements Serializable, IDriverStatusReport {
+
+	private static final long serialVersionUID = 200L;
+
+	private DuccId duccId = null;
+	private String jmxUrl = null;
+	
+	private long workItemsTotal = 0;
+	private int workItemsProcessingCompleted = 0;
+	private int workItemsProcessingError = 0;
+	private int workItemsRetry = 0;
+	private int workItemsDispatched = 0;
+	private int workItemsPreempted = 0;
+	
+	private long wiMillisMin = 0;
+	private long wiMillisMax = 0;
+	private long wiMillisAvg = 0;
+	private long wiMillisOperatingLeast = 0;
+	private long wiMillisCompletedMost = 0;
+	
+	private long wiTodMostRecentStart = 0;
+	
+	private boolean wiPending = true;
+	private boolean wiPendingProcessAssignment = false;
+	
+	private boolean killJob = false;
+	
+	private ArrayList<IWorkItemInfo> listActiveWorkItemInfo = null;
+	
+	private ConcurrentHashMap<RemoteLocation, Long> mapProcessOperatingMillis = null;
+	
+	private long max(long a, long b) {
+		long retVal = a;
+		if(b > a) {
+			retVal = b;
+		}
+		return retVal;
+	}
+	
+	private long min(long a, long b) {
+		long retVal = a;
+		if(b < a) {
+			retVal = b;
+		}
+		return retVal;
+	}
+	
+	public JobDriverReport(IOperatingInfo operatingInfo) {
+		//setDuccId(driverContainer.getDuccId());
+		//setJmxUrl(driverContainer.getJmxUrl());
+		setWorkItemsTotal(operatingInfo.getWorkItemCrTotal());
+		setWorkItemsProcessingCompleted(operatingInfo.getWorkItemEndSuccesses());
+		setWorkItemsProcessingError(operatingInfo.getWorkItemEndFailures());
+		setWorkItemsRetry(operatingInfo.getWorkItemUserProcessingErrorRetries());
+		setWorkItemsDispatched(operatingInfo.getWorkItemJpSends()-(operatingInfo.getWorkItemEndSuccesses()+operatingInfo.getWorkItemEndFailures()));
+		// min of finished & running
+		long fMin = operatingInfo.getWorkItemFinishedMillisMin();
+		long min = fMin;
+		long rMin = operatingInfo.getWorkItemRunningMillisMin();
+		if(rMin > 0) {
+			min = min(fMin, rMin);
+		}
+		setWiMillisMin(min);
+		// max of finished & running
+		long fMax = operatingInfo.getWorkItemFinishedMillisMax();
+		long max = fMax;
+		long rMax = operatingInfo.getWorkItemRunningMillisMax();
+		if(rMax > 0) {
+			max = max(fMax, rMax);
+		}
+		setWiMillisMax(max);
+		// avg of finished
+		long avg = operatingInfo.getWorkItemFinishedMillisAvg();
+		setWiMillisAvg(avg);
+		// min of running
+		setWiMillisOperatingLeast(rMin);
+		// max of finished
+		setWiMillisCompletedMost(fMax);
+		// most recent start TOD
+		setMostRecentStart(operatingInfo.getWorkItemTodMostRecentStart());
+		// pending means CR fetches < crTotal
+		setWiPending(operatingInfo.isWorkItemCrPending());
+		// kill job?
+		if(operatingInfo.isKillJob()) {
+			setKillJob();
+		}
+		// operating map
+		setActiveWorkItemInfo(operatingInfo.getActiveWorkItemInfo());
+	}
+	
+	private void setDuccId(DuccId value) {
+		duccId = value;
+	}
+	
+	private void setJmxUrl(String value) {
+		jmxUrl = value;
+	}
+	
+	private void setWorkItemsTotal(long value) {
+		workItemsTotal = value;
+	}
+	
+	private void setWorkItemsProcessingCompleted(int value) {
+		workItemsProcessingCompleted = value;
+	}
+	
+	private void setWorkItemsProcessingError(int value) {
+		workItemsProcessingError = value;
+	}
+	
+	private void setWorkItemsRetry(int value) {
+		workItemsRetry = value;
+	}
+	
+	private void setWorkItemsDispatched(int value) {
+		workItemsDispatched = value;
+	}
+	
+	private void setWiMillisMin(long value) {
+		wiMillisMin = value;
+	}
+	
+	private void setWiMillisMax(long value) {
+		wiMillisMax = value;
+	}
+	
+	private void setWiMillisAvg(long value) {
+		wiMillisAvg = value;
+	}
+	
+	private void setWiMillisOperatingLeast(long value) {
+		wiMillisOperatingLeast = value;
+	}
+	
+	private void setWiMillisCompletedMost(long value) {
+		wiMillisCompletedMost = value;
+	}
+	
+	private void setMostRecentStart(long value) {
+		wiTodMostRecentStart = value;
+	}
+	
+	private void setWiPending(boolean value) {
+		wiPending = value;
+	}
+	
+	private void setKillJob() {
+		killJob = true;
+	}
+	
+	private void setActiveWorkItemInfo(ArrayList<IWorkItemInfo> value) {
+		listActiveWorkItemInfo = value;
+	}
+	
+	@Override
+	public long getVersion() {
+		return serialVersionUID;
+	}
+	
+	@Override
+	public DuccId getDuccId() {
+		return duccId;
+	}
+
+	@Override
+	public String getLogReport() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public long getWorkItemsTotal() {
+		return workItemsTotal;
+	}
+
+	@Override
+	public int getWorkItemsProcessingCompleted() {
+		return workItemsProcessingCompleted;
+	}
+
+	@Override
+	public int getWorkItemsProcessingError() {
+		return workItemsProcessingError;
+	}
+
+	@Override
+	public int getWorkItemsRetry() {
+		return workItemsRetry;
+	}
+
+	@Override
+	public int getWorkItemsDispatched() {
+		return workItemsDispatched;
+	}
+
+	@Override
+	public int getWorkItemsPreempted() {
+		return workItemsPreempted;
+	}
+
+	@Override
+	public int getWorkItemsLost() {
+		return 0;
+	}
+
+	@Override
+	public int getWorkItemPendingProcessAssignmentCount() {
+		return 0;
+	}
+
+	@Override
+	public long getWiMillisMin() {
+		return wiMillisMin;
+	}
+
+	@Override
+	public long getWiMillisMax() {
+		return wiMillisMax;
+	}
+
+	@Override
+	public long getWiMillisAvg() {
+		return wiMillisAvg;
+	}
+
+	@Override
+	public long getWiMillisOperatingLeast() {
+		return wiMillisOperatingLeast;
+	}
+
+	@Override
+	public long getWiMillisCompletedMost() {
+		return wiMillisCompletedMost;
+	}
+
+	@Override
+	public long getMostRecentStart() {
+		return wiTodMostRecentStart;
+	}
+
+	@Override
+	public boolean isPending() {
+		return wiPending;
+	}
+
+	@Override
+	public boolean isWorkItemPendingProcessAssignment() {
+		return wiPendingProcessAssignment;
+	}
+
+	@Override
+	public boolean isKillJob() {
+		return killJob;
+	}
+
+	@Override
+	public boolean isOperating(String nodeIP, String PID) {
+		boolean retVal = false;
+		if(listActiveWorkItemInfo != null) {
+			for(IWorkItemInfo wii : listActiveWorkItemInfo) {
+				if(Util.compare(wii.getNodeAddress(), nodeIP)) {
+					if(Util.compare(""+wii.getPid(), PID)) {
+						retVal = true;
+						break;
+					}
+				}
+			}
+		}
+		return retVal;
+	}
+
+	@Override
+	public String getJdJmxUrl() {
+		return jmxUrl;
+	}
+
+	@Override
+	public IDuccUimaDeploymentDescriptor getUimaDeploymentDescriptor() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public Iterator<DuccId> getKillDuccIds() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public DriverState getDriverState() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public JobCompletionType getJobCompletionType() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public IRationale getJobCompletionRationale() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public IDuccPerWorkItemStatistics getPerWorkItemStatistics() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public DuccProcessWorkItemsMap getDuccProcessWorkItemsMap() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public ConcurrentHashMap<RemoteLocation, Long> getOperatingMillisMap() {
+		if(mapProcessOperatingMillis == null) {
+			mapProcessOperatingMillis = new ConcurrentHashMap<RemoteLocation, Long>();
+			if(listActiveWorkItemInfo != null) {
+				for(IWorkItemInfo wii: listActiveWorkItemInfo) {
+					String nodeIP = wii.getNodeAddress();
+					String PID = ""+wii.getPid();
+					RemoteLocation rl = new RemoteLocation(nodeIP, PID);
+					if(!mapProcessOperatingMillis.containsKey(rl)) {
+						mapProcessOperatingMillis.put(rl, new Long(0));
+					}
+					long millis = wii.getOperatingMillis() + mapProcessOperatingMillis.get(rl);
+					mapProcessOperatingMillis.put(rl, new Long(millis));
+				}
+			}
+		}
+		return mapProcessOperatingMillis;
+	}
+
+	@Override
+	public ConcurrentHashMap<Integer, DuccId> getLimboMap() {
+		ConcurrentHashMap<Integer, DuccId> map = new ConcurrentHashMap<Integer, DuccId>();
+		return map;
+	}
+
+	@Override
+	public ConcurrentHashMap<String, DuccId> getCasQueuedMap() {
+		ConcurrentHashMap<String, DuccId> map = new ConcurrentHashMap<String, DuccId>();
+		return map;
+	}
+
+}

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