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 2018/10/03 19:26:47 UTC

svn commit: r1842752 - in /uima/uima-ducc/trunk: uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/ uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/ uima-ducc-container/src/main/java/org/apache/uima/ducc/conta...

Author: degenaro
Date: Wed Oct  3 19:26:47 2018
New Revision: 1842752

URL: http://svn.apache.org/viewvc?rev=1842752&view=rev
Log:
UIMA-5880 DUCC Web Server (WS) display of Tasks column on Job Performance tab

Modified:
    uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/IJobPerformanceSummary.java
    uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/JobPerformanceSummary.java
    uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/PerformanceMetricsSummaryItem.java
    uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/PerformanceSummaryReader.java
    uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/UimaStatistic.java
    uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/ViewJobPerformanceSummary.java
    uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEnd.java
    uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/IWorkItemPerformanceIndividualInfo.java
    uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/IWorkItemPerformanceIndividualKeeper.java
    uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/IWorkItemPerformanceSummaryInfo.java
    uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/IWorkItemPerformanceSummaryKeeper.java
    uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/WorkItemPerformanceIndividualInfo.java
    uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/WorkItemPerformanceIndividualKeeper.java
    uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/WorkItemPerformanceSummaryInfo.java
    uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/WorkItemPerformanceSummaryKeeper.java
    uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
    uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/job.details.table.performance.jsp

Modified: uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/IJobPerformanceSummary.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/IJobPerformanceSummary.java?rev=1842752&r1=1842751&r2=1842752&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/IJobPerformanceSummary.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/IJobPerformanceSummary.java Wed Oct  3 19:26:47 2018
@@ -35,6 +35,9 @@ public interface IJobPerformanceSummary
 	public long getAnalysisTimeMax();
 	public void setAnalysisTimeMax(long value);
 	
+	public long getAnalysisTasks();
+	public void setAnalysisTasks(long value);
+	
 	public long getNumProcessed();
 	public void setNumProcessed(long value);
 }

Modified: uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/JobPerformanceSummary.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/JobPerformanceSummary.java?rev=1842752&r1=1842751&r2=1842752&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/JobPerformanceSummary.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/JobPerformanceSummary.java Wed Oct  3 19:26:47 2018
@@ -30,7 +30,8 @@ public class JobPerformanceSummary imple
 	
 	private AtomicLong analysisTimeMin = new AtomicLong(-1);
 	private AtomicLong analysisTimeMax = new AtomicLong(-1);
-
+	
+	private AtomicLong analysisTasks = new AtomicLong(0);
 
 	public String getName() {
 		return name;
@@ -78,7 +79,17 @@ public class JobPerformanceSummary imple
 	public void setAnalysisTimeMax(long value) {
 		analysisTimeMax.set(value);
 	}
+	
+	
+	public long getAnalysisTasks() {
+		return analysisTasks.get();
+	}
+
 
+	public void setAnalysisTasks(long value) {
+		analysisTasks.set(value);
+	}
+	
 
 	public long getNumProcessed() {
 		return numProcessed.get();

Modified: uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/PerformanceMetricsSummaryItem.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/PerformanceMetricsSummaryItem.java?rev=1842752&r1=1842751&r2=1842752&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/PerformanceMetricsSummaryItem.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/PerformanceMetricsSummaryItem.java Wed Oct  3 19:26:47 2018
@@ -36,6 +36,8 @@ public class PerformanceMetricsSummaryIt
 	private AtomicLong analysisTimeMin = new AtomicLong(-1);
 	private AtomicLong analysisTimeMax = new AtomicLong(-1);
 	
+	private AtomicLong analysisTasks = new AtomicLong(0);
+	
 	public PerformanceMetricsSummaryItem(String name, String uniqueName) {
 		this.name = name;
 		this.uniqueName = uniqueName;
@@ -46,7 +48,8 @@ public class PerformanceMetricsSummaryIt
 										 long analysisTime,
 										 long numProcessed,
 										 long analysisTimeMin,
-										 long analysisTimeMax
+										 long analysisTimeMax,
+										 long analysisTasks
 										 ) 
 	{
 		this.name = name;
@@ -55,6 +58,7 @@ public class PerformanceMetricsSummaryIt
 		this.numProcessed.set(numProcessed);
 		this.analysisTimeMin.set(analysisTimeMin);
 		this.analysisTimeMax.set(analysisTimeMax);
+		this.analysisTasks.set(analysisTasks);
 	}
 	
 	public String getName() {
@@ -99,6 +103,10 @@ public class PerformanceMetricsSummaryIt
 		return analysisTimeMax.get();
 	}
 	
+	public long getAnalysisTasks() {
+		return analysisTasks.get();
+	}
+	
 	public long getNumProcessed() {
 		return numProcessed.get();
 	}
@@ -135,6 +143,10 @@ public class PerformanceMetricsSummaryIt
 		return analysisTime.addAndGet(delta);
 	}
 	
+	public long addAndGetAnalysisTasks(long delta) {
+		return analysisTasks.addAndGet(delta);
+	}
+	
 	public long addAndGetNumProcessed(long delta) {
 		return numProcessed.addAndGet(delta);
 	}

Modified: uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/PerformanceSummaryReader.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/PerformanceSummaryReader.java?rev=1842752&r1=1842751&r2=1842752&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/PerformanceSummaryReader.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/PerformanceSummaryReader.java Wed Oct  3 19:26:47 2018
@@ -46,7 +46,7 @@ public class PerformanceSummaryReader ex
 		for(Entry<String, JobPerformanceSummary> entry : entries) {
 			String key = entry.getKey();
 			IJobPerformanceSummary jps = entry.getValue();
-			PerformanceMetricsSummaryItem value = new PerformanceMetricsSummaryItem(jps.getName(),jps.getUniqueName(),jps.getAnalysisTime(),jps.getNumProcessed(),jps.getAnalysisTimeMin(),jps.getAnalysisTimeMax());
+			PerformanceMetricsSummaryItem value = new PerformanceMetricsSummaryItem(jps.getName(),jps.getUniqueName(),jps.getAnalysisTime(),jps.getNumProcessed(),jps.getAnalysisTimeMin(),jps.getAnalysisTimeMax(),jps.getAnalysisTasks());
 			map.putItem(key, value);
 		}
 		return map;
@@ -71,7 +71,7 @@ public class PerformanceSummaryReader ex
             String key = entry.getKey();
             IJobPerformanceSummary jps = entry.getValue();
             PerformanceMetricsSummaryItem value = new PerformanceMetricsSummaryItem(jps.getName(), jps.getUniqueName(),
-                    jps.getAnalysisTime(), jps.getNumProcessed(), jps.getAnalysisTimeMin(), jps.getAnalysisTimeMax());
+                    jps.getAnalysisTime(), jps.getNumProcessed(), jps.getAnalysisTimeMin(), jps.getAnalysisTimeMax(), jps.getAnalysisTasks());
             map.putItem(key, value);
         }
         return map;

Modified: uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/UimaStatistic.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/UimaStatistic.java?rev=1842752&r1=1842751&r2=1842752&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/UimaStatistic.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/UimaStatistic.java Wed Oct  3 19:26:47 2018
@@ -25,14 +25,16 @@ public class UimaStatistic implements Co
 	  private long analysisTime;
 	  private long analysisMinTime;
 	  private long analysisMaxTime;
+	  private long analysisTasks;
 	  private String longName;
 
-	  public UimaStatistic (String shortName, String longName, long analysisTime, long anMinTime, long anMaxTime) {
+	  public UimaStatistic (String shortName, String longName, long analysisTime, long anMinTime, long anMaxTime, long anTasks) {
 	    this.shortName = shortName;
 	    this.analysisTime = analysisTime;
 	    this.longName = longName;
 	    this.analysisMinTime = anMinTime;
 	    this.analysisMaxTime = anMaxTime;
+	    this.analysisTasks = anTasks;
 	  }
 
 	  
@@ -63,6 +65,10 @@ public class UimaStatistic implements Co
 	    return analysisMaxTime;
 	  }
 
+	  public long getAnalysisTasks() {
+	    return analysisTasks;
+	  }
+	  
 	  public String getLongName() {
 	    return longName;
 	  }

Modified: uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/ViewJobPerformanceSummary.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/ViewJobPerformanceSummary.java?rev=1842752&r1=1842751&r2=1842752&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/ViewJobPerformanceSummary.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/jd/files/perf/ViewJobPerformanceSummary.java Wed Oct  3 19:26:47 2018
@@ -50,11 +50,12 @@ public class ViewJobPerformanceSummary {
         long anTime = entry.getValue().getAnalysisTime();
         long anMinTime = entry.getValue().getAnalysisTimeMin();
         long anMaxTime = entry.getValue().getAnalysisTimeMax();
+        long anTasks = entry.getValue().getAnalysisTasks();
         analysisTime += anTime;
         if (posName > 0) {
           String shortname = key.substring(posName+1);
           UimaStatistic stat = new UimaStatistic(shortname,
-              entry.getKey(), anTime, anMinTime, anMaxTime);
+              entry.getKey(), anTime, anMinTime, anMaxTime, anTasks);
           uimaStats.add(stat);
         }
       }

Modified: uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEnd.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEnd.java?rev=1842752&r1=1842751&r2=1842752&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEnd.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/fsm/wi/ActionEnd.java Wed Oct  3 19:26:47 2018
@@ -19,8 +19,6 @@
 package org.apache.uima.ducc.container.jd.fsm.wi;
 
 import java.util.List;
-import java.util.Map.Entry;
-import java.util.Properties;
 
 import org.apache.uima.ducc.common.jd.files.workitem.IWorkItemStateKeeper;
 import org.apache.uima.ducc.container.common.MessageBuffer;
@@ -104,6 +102,7 @@ public class ActionEnd extends ActionEnd
 	private String keyName = "name";
 	private String keyUniqueName = "uniqueName";
 	private String keyAnalysisTime = "analysisTime";
+	private String keyAnalysisTasks = "analysisTasks";
 	
 	private boolean oldFormat = false;
 	
@@ -131,80 +130,60 @@ public class ActionEnd extends ActionEnd
 				String serializedPerformance = metaCas.getPerformanceMetrics();
 				try {
 					performanceMetrics = deserializer.deserialize(serializedPerformance);
+					if(performanceMetrics == null) {
+						logger.debug(location,  ILogger.null_id, "seqNo=", wi.getSeqNo(), "performanceMetrics=", performanceMetrics); // null
+					}
+					else if(performanceMetrics.isEmpty()) {
+						logger.debug(location,  ILogger.null_id, "seqNo=", wi.getSeqNo(), "performanceMetrics=", performanceMetrics); // empty
+					}
 				} catch( Exception e) {
 					logger.error(location, ILogger.null_id, e);
 				}
-				
 				if(performanceMetrics != null && !performanceMetrics.isEmpty()) {
-					//List<Properties> list = performanceMetrics.get();
-					//if(list != null) {
-						int size = 0;
-						//if(list !=  null) {
-							//size = list.size();
-						size = performanceMetrics.size();
-							JobDriver jd = JobDriver.getInstance();
-							String logdir = jd.getLogDir();
-							String seqNo = ""+wi.getSeqNo();
-							IWorkItemPerformanceIndividualKeeper wipik = new WorkItemPerformanceIndividualKeeper(logdir, seqNo);
-							IWorkItemPerformanceSummaryKeeper wipsk = jd.getWorkItemPerformanceSummaryKeeper();
-							wipsk.count();
-							long total_time = 0;
-							//for(Properties properties : list) {
-							for( PerformanceMetrics pm : performanceMetrics) {
-								/*
-								String name = properties.getProperty(keyName);
-								String uniqueName = normalizeUniqueName(properties.getProperty(keyUniqueName));
-								String analysisTime = properties.getProperty(keyAnalysisTime);
-								*/
-								String name = pm.getName();
-								String uniqueName = normalizeUniqueName(pm.getUniqueName());
-								long time = pm.getAnalysisTime();
-								//long time = 0;
-								/*
-								try {
-									time = Long.parseLong(analysisTime);
-								}
-								catch(Exception e) {
-									logger.error(location, ILogger.null_id, e);
-								}
-								*/
-								if(time < 0) {
-//									String text = "seqNo="+seqNo+" "+"time="+time+" "+"analysisTime="+analysisTime+" "+"uniqueName="+uniqueName;
-									String text = "seqNo="+seqNo+" "+"time="+time+" "+"analysisTime="+time+" "+"uniqueName="+uniqueName;
-									logger.warn(location, ILogger.null_id, text);
-								}
-								wipik.dataAdd(name, uniqueName, time);
-								wipsk.dataAdd(name, uniqueName, time);
-								//for(Entry<Object, Object> entry : properties.entrySet()) {
-									//String key = (String) entry.getKey();
-									//String value = (String) entry.getValue();
-									MessageBuffer mb = LoggerHelper.getMessageBuffer(actionData);
-/*									
-									mb.append(Standardize.Label.key.get()+key);
-									mb.append(Standardize.Label.value.get()+value);
-*/
-									mb.append(Standardize.Label.key.get()+"name");
-									mb.append(Standardize.Label.value.get()+name);
-									
-									mb.append(Standardize.Label.key.get()+"uniqueName");
-									mb.append(Standardize.Label.value.get()+uniqueName);
-
-									mb.append(Standardize.Label.key.get()+"analysisTime");
-									mb.append(Standardize.Label.value.get()+time);
-
-									logger.debug(location, ILogger.null_id, mb.toString());
-								//}
-								total_time += time;
-							}
-							wipik.publish();
-							// Add the aggregate values as if a no-name delegate
-							wipsk.dataAdd("TOTALS", "", total_time);
-						//}
+					int size = 0;
+					size = performanceMetrics.size();
+					logger.debug(location,  ILogger.null_id, "seqNo=", wi.getSeqNo(), "performanceMetrics.size=", size);
+					JobDriver jd = JobDriver.getInstance();
+					String logdir = jd.getLogDir();
+					String seqNo = ""+wi.getSeqNo();
+					IWorkItemPerformanceIndividualKeeper wipik = new WorkItemPerformanceIndividualKeeper(logdir, seqNo);
+					IWorkItemPerformanceSummaryKeeper wipsk = jd.getWorkItemPerformanceSummaryKeeper();
+					wipsk.count();
+					long total_time = 0;
+					long total_tasks = 0;
+					//for(Properties properties : list) {
+					for(PerformanceMetrics pm : performanceMetrics) {	
+						String name = pm.getName();
+						String uniqueName = normalizeUniqueName(pm.getUniqueName());
+						long time = pm.getAnalysisTime();
+						long tasks = pm.getNumberOfTasksProcessed();
+						logger.debug(location, ILogger.null_id, "seqNo=", seqNo, "name=", name, "uniqueName=", uniqueName, "time=", time, "tasks=", tasks);
+						if(time < 0) {
+							String text = "seqNo="+seqNo+" "+"time="+time+" "+"analysisTime="+time+" "+"uniqueName="+uniqueName;
+							logger.warn(location, ILogger.null_id, text);
+						}
+						wipik.dataAdd(name, uniqueName, time, tasks);
+						wipsk.dataAdd(name, uniqueName, time, tasks);
 						MessageBuffer mb = LoggerHelper.getMessageBuffer(actionData);
-						mb.append(Standardize.Label.size.get()+size);
+						mb.append(Standardize.Label.key.get()+keyName);
+						mb.append(Standardize.Label.value.get()+name);				
+						mb.append(Standardize.Label.key.get()+keyUniqueName);
+						mb.append(Standardize.Label.value.get()+uniqueName);
+						mb.append(Standardize.Label.key.get()+keyAnalysisTime);
+						mb.append(Standardize.Label.value.get()+time);
+						mb.append(Standardize.Label.key.get()+keyAnalysisTasks);
+						mb.append(Standardize.Label.value.get()+tasks);
 						logger.debug(location, ILogger.null_id, mb.toString());
+						total_time += time;
+						total_tasks += tasks;
 					}
-				//}
+					wipik.publish();
+					// Add the aggregate values as if a no-name delegate
+					wipsk.dataAdd("TOTALS", "", total_time, total_tasks);
+					MessageBuffer mb = LoggerHelper.getMessageBuffer(actionData);
+					mb.append(Standardize.Label.size.get()+size);
+					logger.debug(location, ILogger.null_id, mb.toString());
+				}
 			}
 		}
 	}

Modified: uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/IWorkItemPerformanceIndividualInfo.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/IWorkItemPerformanceIndividualInfo.java?rev=1842752&r1=1842751&r2=1842752&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/IWorkItemPerformanceIndividualInfo.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/IWorkItemPerformanceIndividualInfo.java Wed Oct  3 19:26:47 2018
@@ -23,4 +23,5 @@ public interface IWorkItemPerformanceInd
 	public String getName();
 	public String getUniqueName();
 	public double getTime();
+	public double getTasks();
 }

Modified: uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/IWorkItemPerformanceIndividualKeeper.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/IWorkItemPerformanceIndividualKeeper.java?rev=1842752&r1=1842751&r2=1842752&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/IWorkItemPerformanceIndividualKeeper.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/IWorkItemPerformanceIndividualKeeper.java Wed Oct  3 19:26:47 2018
@@ -23,6 +23,6 @@ import java.util.List;
 public interface IWorkItemPerformanceIndividualKeeper {
 
 	public List<IWorkItemPerformanceIndividualInfo> dataGet();
-	public void dataAdd(String name, String uniqueName, long millis);
+	public void dataAdd(String name, String uniqueName, long millis, long tasks);
 	public void publish();
 }

Modified: uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/IWorkItemPerformanceSummaryInfo.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/IWorkItemPerformanceSummaryInfo.java?rev=1842752&r1=1842751&r2=1842752&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/IWorkItemPerformanceSummaryInfo.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/IWorkItemPerformanceSummaryInfo.java Wed Oct  3 19:26:47 2018
@@ -28,4 +28,5 @@ public interface IWorkItemPerformanceSum
 	public double getAvg();
 	public double getMin();
 	public double getMax();
+	public double getTasks();
 }

Modified: uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/IWorkItemPerformanceSummaryKeeper.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/IWorkItemPerformanceSummaryKeeper.java?rev=1842752&r1=1842751&r2=1842752&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/IWorkItemPerformanceSummaryKeeper.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/IWorkItemPerformanceSummaryKeeper.java Wed Oct  3 19:26:47 2018
@@ -24,6 +24,6 @@ public interface IWorkItemPerformanceSum
 
 	public List<IWorkItemPerformanceSummaryInfo> dataGet();
 	public void count();
-	public void dataAdd(String name, String uniqueName, long millis);
+	public void dataAdd(String name, String uniqueName, long millis, long tasks);
 	public void publish();
 }

Modified: uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/WorkItemPerformanceIndividualInfo.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/WorkItemPerformanceIndividualInfo.java?rev=1842752&r1=1842751&r2=1842752&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/WorkItemPerformanceIndividualInfo.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/WorkItemPerformanceIndividualInfo.java Wed Oct  3 19:26:47 2018
@@ -24,16 +24,19 @@ public class WorkItemPerformanceIndividu
 	String uniqueName = null;
 	double count = 0;
 	double time = 0;
+	double tasks = 0;
 	
 	public WorkItemPerformanceIndividualInfo(
 			String name,
 			String uniquename,
-			double time
+			double time,
+			double tasks
 			) 
 	{
 		setName(name);
 		setUniqueName(uniquename);
 		setTime(time);
+		setTasks(tasks);
 	}
 	
 	private void setName(String value) {
@@ -62,5 +65,13 @@ public class WorkItemPerformanceIndividu
 	public double getTime() {
 		return time;
 	}
-
+	
+	private void setTasks(double value) {
+		tasks = value;
+	}
+	
+	@Override
+	public double getTasks() {
+		return tasks;
+	}
 }

Modified: uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/WorkItemPerformanceIndividualKeeper.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/WorkItemPerformanceIndividualKeeper.java?rev=1842752&r1=1842751&r2=1842752&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/WorkItemPerformanceIndividualKeeper.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/WorkItemPerformanceIndividualKeeper.java Wed Oct  3 19:26:47 2018
@@ -49,7 +49,15 @@ public class WorkItemPerformanceIndividu
 	private String logFolder = null;
 	private String wiNo = null;
 	
-	private ConcurrentHashMap<PerfKey, SynchronizedStats> map = new ConcurrentHashMap<PerfKey, SynchronizedStats>();
+	private class PerfStats {
+		SynchronizedStats ss = null;
+		long tasks = 0;
+		public PerfStats() {
+			ss = new SynchronizedStats();
+		}
+	}
+	
+	private ConcurrentHashMap<PerfKey, PerfStats> map = new ConcurrentHashMap<PerfKey, PerfStats>();
 
 	public WorkItemPerformanceIndividualKeeper(String logDir, String wiNo) {
 		if(isIndividualWorkItemPerformance) {
@@ -72,15 +80,18 @@ public class WorkItemPerformanceIndividu
 	public List<IWorkItemPerformanceIndividualInfo> dataGet() {
 		List<IWorkItemPerformanceIndividualInfo> list = new ArrayList<IWorkItemPerformanceIndividualInfo>();
 		if(isIndividualWorkItemPerformance) {
-			for(Entry<PerfKey, SynchronizedStats> entry : map.entrySet()) {
+			for(Entry<PerfKey, PerfStats> entry : map.entrySet()) {
 				String name = entry.getKey().getName();
 				String uniqueName = entry.getKey().getUniqueName();
-				SynchronizedStats stats = entry.getValue();
+				PerfStats perfStats = entry.getValue();
+				SynchronizedStats stats = perfStats.ss;
+				long tasks = perfStats.tasks;
 				double time = stats.getSum();
 				IWorkItemPerformanceIndividualInfo item = new WorkItemPerformanceIndividualInfo(
 						name,
 						uniqueName,
-						time
+						time,
+						tasks
 						);
 				list.add(item);
 			}
@@ -89,25 +100,29 @@ public class WorkItemPerformanceIndividu
 	}
 	
 	@Override
-	public void dataAdd(String name, String uniqueName, long time) {
+	public void dataAdd(String name, String uniqueName, long time, long tasks) {
 		String location = "dataAdd";
 		if(isIndividualWorkItemPerformance) {
 			try {
 				// name
 				PerfKey perfKey = new PerfKey(name, uniqueName);
 				if(!map.containsKey(perfKey)) {
-					map.putIfAbsent(perfKey, new SynchronizedStats());
+					map.putIfAbsent(perfKey, new PerfStats());
 				}
+				PerfStats perfStats = map.get(perfKey);
 				// stats
-				SynchronizedStats stats = map.get(perfKey);
+				SynchronizedStats stats = perfStats.ss;
 				stats.addValue(time);
 				// sum
 				long lTimeSum = (long)stats.getSum();
 				String timeSum = FormatHelper.duration(lTimeSum,Precision.Tenths);
+				// tasks
+				perfStats.tasks = tasks;
 				// log
 				MessageBuffer mb = new MessageBuffer();
 				mb.append(Standardize.Label.name.get()+name);
 				mb.append(Standardize.Label.sum.get()+timeSum);
+				mb.append(Standardize.Label.tasks.get()+tasks);
 				if(lTimeSum < 0) {
 					logger.warn(location, ILogger.null_id, mb.toString());
 				}

Modified: uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/WorkItemPerformanceSummaryInfo.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/WorkItemPerformanceSummaryInfo.java?rev=1842752&r1=1842751&r2=1842752&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/WorkItemPerformanceSummaryInfo.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/WorkItemPerformanceSummaryInfo.java Wed Oct  3 19:26:47 2018
@@ -28,6 +28,7 @@ public class WorkItemPerformanceSummaryI
 	double avg = 0;
 	double min = 0;
 	double max = 0;
+	double tasks = 0;
 	
 	public WorkItemPerformanceSummaryInfo(
 			String name,
@@ -37,7 +38,8 @@ public class WorkItemPerformanceSummaryI
 			double pctOfTime,
 			double avg,
 			double min,
-			double max
+			double max,
+			double tasks
 			) 
 	{
 		setName(name);
@@ -48,6 +50,7 @@ public class WorkItemPerformanceSummaryI
 		setAvg(avg);
 		setMin(min);
 		setMax(max);
+		setTasks(tasks);
 	}
 	
 	private void setName(String value) {
@@ -121,5 +124,13 @@ public class WorkItemPerformanceSummaryI
 	public double getMax() {
 		return max;
 	}
+	
+	private void setTasks(double value) {
+		tasks = value;
+	}
 
+	@Override
+	public double getTasks() {
+		return tasks;
+	}
 }

Modified: uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/WorkItemPerformanceSummaryKeeper.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/WorkItemPerformanceSummaryKeeper.java?rev=1842752&r1=1842751&r2=1842752&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/WorkItemPerformanceSummaryKeeper.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/wi/perf/WorkItemPerformanceSummaryKeeper.java Wed Oct  3 19:26:47 2018
@@ -47,7 +47,15 @@ public class WorkItemPerformanceSummaryK
 	private AtomicLong count = new AtomicLong(0);
 	private AtomicLong total = new AtomicLong(0);
 	
-	private ConcurrentHashMap<PerfKey, SynchronizedStats> map = new ConcurrentHashMap<PerfKey, SynchronizedStats>();
+	private class PerfStats {
+		SynchronizedStats ss = null;
+		long tasks = 0;
+		public PerfStats() {
+			ss = new SynchronizedStats();
+		}
+	}
+	
+	private ConcurrentHashMap<PerfKey, PerfStats> map = new ConcurrentHashMap<PerfKey, PerfStats>();
 
 	public WorkItemPerformanceSummaryKeeper(String logDir) {
 		setLogDir(logDir);
@@ -60,10 +68,11 @@ public class WorkItemPerformanceSummaryK
 	@Override
 	public List<IWorkItemPerformanceSummaryInfo> dataGet() {
 		List<IWorkItemPerformanceSummaryInfo> list = new ArrayList<IWorkItemPerformanceSummaryInfo>();
-		for(Entry<PerfKey, SynchronizedStats> entry : map.entrySet()) {
+		for(Entry<PerfKey, PerfStats> entry : map.entrySet()) {
 			String name = entry.getKey().getName();
 			String uniqueName = entry.getKey().getUniqueName();
-			SynchronizedStats stats = entry.getValue();
+			PerfStats perfStats = entry.getValue();
+			SynchronizedStats stats = perfStats.ss;
 			double count = stats.getNum();
 			double time = stats.getSum();
 			double pctOfTime = 0;
@@ -73,6 +82,7 @@ public class WorkItemPerformanceSummaryK
 			double avg = stats.getMean();
 			double min = stats.getMin();
 			double max = stats.getMax();
+			long tasks = perfStats.tasks;
 			IWorkItemPerformanceSummaryInfo item = new WorkItemPerformanceSummaryInfo(
 					name,
 					uniqueName,
@@ -81,7 +91,8 @@ public class WorkItemPerformanceSummaryK
 					pctOfTime,
 					avg,
 					min,
-					max
+					max,
+					tasks
 					);
 			list.add(item);
 		}
@@ -94,16 +105,17 @@ public class WorkItemPerformanceSummaryK
 	}
 	
 	@Override
-	public void dataAdd(String name, String uniqueName, long time) {
+	public void dataAdd(String name, String uniqueName, long time, long tasks) {
 		String location = "dataAdd";
 		try {
 			// name
 			PerfKey perfKey = new PerfKey(name, uniqueName);
 			if(!map.containsKey(perfKey)) {
-				map.putIfAbsent(perfKey, new SynchronizedStats());
+				map.putIfAbsent(perfKey, new PerfStats());
 			}
+			PerfStats perfStats = map.get(perfKey);
 			// stats
-			SynchronizedStats stats = map.get(perfKey);
+			SynchronizedStats stats = perfStats.ss;
 			stats.addValue(time);
 			total.addAndGet(time);
 			// sum
@@ -118,6 +130,8 @@ public class WorkItemPerformanceSummaryK
 			// max
 			long lTimeMax = (long)stats.getMax();
 			String timeMax = FormatHelper.duration(lTimeMax,Precision.Tenths);
+			// tasks
+			perfStats.tasks += tasks;
 			// log
 			MessageBuffer mb = new MessageBuffer();
 			mb.append(Standardize.Label.name.get()+name);
@@ -127,6 +141,7 @@ public class WorkItemPerformanceSummaryK
 			mb.append(Standardize.Label.max.get()+timeMax);
 			mb.append(Standardize.Label.count.get()+count.get());
 			mb.append(Standardize.Label.total.get()+total.get());
+			mb.append(Standardize.Label.tasks.get()+perfStats.tasks);
 			if((lTimeSum < 0)||(lTimeAvg < 0)||(lTimeMin < 0)||(lTimeMax < 0)) {
 				logger.warn(location, ILogger.null_id, mb.toString());
 			}
@@ -146,7 +161,8 @@ public class WorkItemPerformanceSummaryK
 				(long)wipsi.getTime(),
 				(long)wipsi.getCount(),
 				(long)wipsi.getMin(),
-				(long)wipsi.getMax()
+				(long)wipsi.getMax(),
+				(long)wipsi.getTasks()
 				);
 		return retVal;
 	}
@@ -159,6 +175,7 @@ public class WorkItemPerformanceSummaryK
 			for(IWorkItemPerformanceSummaryInfo wipsi : list) {
 				PerformanceMetricsSummaryItem item = create(wipsi);
 				JobPerformanceSummary jps = new JobPerformanceSummary();
+				jps.setAnalysisTasks(item.getAnalysisTasks());
 				jps.setAnalysisTime(item.getAnalysisTime());
 				jps.setAnalysisTimeMax(item.getAnalysisTimeMax());
 				jps.setAnalysisTimeMin(item.getAnalysisTimeMin());
@@ -166,6 +183,14 @@ public class WorkItemPerformanceSummaryK
 				jps.setName(item.getName());
 				jps.setUniqueName(item.getUniqueName());
 				map.put(jps.getUniqueName(), jps);
+				// log
+				MessageBuffer mb = new MessageBuffer();
+				mb.append(Standardize.Label.name.get()+item.getName());
+				mb.append(Standardize.Label.sum.get()+item.getAnalysisTime());
+				mb.append(Standardize.Label.min.get()+item.getAnalysisTimeMin());
+				mb.append(Standardize.Label.max.get()+item.getAnalysisTimeMax());
+				mb.append(Standardize.Label.tasks.get()+item.getAnalysisTasks());
+				logger.debug(location, ILogger.null_id, mb.toString());
 			}
 			Integer casCount = new Integer((int)count.get());
 			JobPerformanceSummaryData data = new JobPerformanceSummaryData(map,casCount);

Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java?rev=1842752&r1=1842751&r2=1842752&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java Wed Oct  3 19:26:47 2018
@@ -1494,6 +1494,25 @@ public class DuccHandler extends DuccAbs
 		duccLogger.trace(methodName, null, messages.fetch("exit"));
 	}
 
+	private void dumpMap(PerformanceMetricsSummaryMap map) {
+		String location = "dumpMap";
+		if(map != null) {
+			if(map.size() == 0) {
+				duccLogger.debug(location, jobid, "map=empty");
+			}
+			else {
+				duccLogger.debug(location, jobid, "map.size="+map.size());
+				for (Entry<String, PerformanceMetricsSummaryItem> entry : map.entrySet()) {
+					PerformanceMetricsSummaryItem item = entry.getValue();
+					duccLogger.debug(location, jobid, "displayName=", item.getDisplayName(), "analysisTime=", item.getAnalysisTime(), "analysisTimeMin=", item.getAnalysisTimeMin(), "analysisTimeMax=", item.getAnalysisTimeMax(), "NumProcessed=", item.getNumProcessed());
+				}
+			}
+		}
+		else {
+			duccLogger.debug(location, jobid, "map=null");
+		}
+	}
+	
 	private void handleDuccServletJobPerformanceData(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response)
 	throws IOException, ServletException
 	{
@@ -1507,6 +1526,7 @@ public class DuccHandler extends DuccAbs
 				EffectiveUser eu = EffectiveUser.create(request);
 				PerformanceSummary performanceSummary = new PerformanceSummary(job.getLogDirectory()+jobNo);
 			    PerformanceMetricsSummaryMap performanceMetricsSummaryMap = performanceSummary.readSummary(eu.get());
+			    dumpMap(performanceMetricsSummaryMap);
 			    if (performanceMetricsSummaryMap == null) {
 			    	sb.append(eu.isLoggedin() ? "(data missing or unreadable)" : "(not visible - try logging in)");
 			    } else if (performanceMetricsSummaryMap.size() == 0) {
@@ -1529,8 +1549,9 @@ public class DuccHandler extends DuccAbs
 				    	long anTime = item.getAnalysisTime();
 				    	long anMinTime = item.getAnalysisTimeMin();
 				    	long anMaxTime = item.getAnalysisTimeMax();
+				    	long anTasks = item.getNumProcessed();
 				    	analysisTime += anTime;
-				    	UimaStatistic stat = new UimaStatistic(shortname, entry.getKey(), anTime, anMinTime, anMaxTime);
+				    	UimaStatistic stat = new UimaStatistic(shortname, entry.getKey(), anTime, anMinTime, anMaxTime, anTasks);
 				    	uimaStats.add(stat);
 				    }
 				    Collections.sort(uimaStats);
@@ -1581,6 +1602,11 @@ public class DuccHandler extends DuccAbs
 					}
 					sb.append(FormatHelper.duration(ltime,Precision.Tenths));
 					sb.append("</span>");
+					// Tasks
+					sb.append("<td align=\"right\">");
+					sb.append("<span class=\"health_purple\" title=\"number of tasks per completed work item\">");
+					sb.append(""+"N/A");
+					sb.append("</span>");
 				    // pass 2
 				    for (int i = 0; i < numstats; ++i) {
 				    	sb.append(trGet(counter++));
@@ -1612,6 +1638,10 @@ public class DuccHandler extends DuccAbs
 						time = uimaStats.get(i).getAnalysisMaxTime();
 						ltime = (long)time;
 						sb.append(FormatHelper.duration(ltime,Precision.Tenths));
+						// Tasks
+						sb.append("<td align=\"right\">");
+						long lnumTasks = (long)(uimaStats.get(i).getAnalysisTasks());
+						sb.append(""+lnumTasks);
 					}
 			    }
 			}

Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/job.details.table.performance.jsp
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/job.details.table.performance.jsp?rev=1842752&r1=1842751&r2=1842752&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/job.details.table.performance.jsp (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/job.details.table.performance.jsp Wed Oct  3 19:26:47 2018
@@ -31,6 +31,7 @@ under the License.
 	<th class="none"              title="the average time spent in the annotater">Avg<br><small>hh:mm:ss/workitem</small></th>
 	<th class="none"              title="the minimum time spent in the annotater">Min<br><small>hh:mm:ss/workitem</small></th>
 	<th class="none"              title="the maximum time spent in the annotater">Max<br><small>hh:mm:ss/workitem</small></th>
+	<th class="sorttable_numeric" title="the number of tasks processed">Tasks</th>
 	</tr>
 	</thead>
 	<tbody id="performance_data_area">