You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by ea...@apache.org on 2008/02/11 18:43:22 UTC
svn commit: r620542 - in
/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae:
./ controller/ handler/input/ message/
Author: eae
Date: Mon Feb 11 09:43:21 2008
New Revision: 620542
URL: http://svn.apache.org/viewvc?rev=620542&view=rev
Log:
UIMA-755 tests work after patch; commit Jerry's patches
Modified:
incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/InProcessCache.java
incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint.java
incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint_impl.java
incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAnalysisEngineController_impl.java
incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessResponseHandler.java
incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/message/AsynchAEMessage.java
Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/InProcessCache.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/InProcessCache.java?rev=620542&r1=620541&r2=620542&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/InProcessCache.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/InProcessCache.java Mon Feb 11 09:43:21 2008
@@ -571,6 +571,7 @@
private long timeToSerializeCAS = 0;
+ private long timeToProcessCAS = 0;
private String casMultiplierKey;
private boolean sendRequestToFreeCas = true;
@@ -639,6 +640,10 @@
{
timeToDeserializeCAS += aTimeToDeserializeCAS;
}
+ public void incrementTimeToProcessCAS(long aTimeToProcessCAS)
+ {
+ timeToProcessCAS += aTimeToProcessCAS;
+ }
public void setCasMultiplierKey( String aKey )
{
@@ -825,6 +830,13 @@
{
this.aborted = aborted;
}
+ public long getTimeToProcessCAS() {
+ return timeToProcessCAS;
+ }
+ public void setTimeToProcessCAS(long timeToProcessCAS) {
+ this.timeToProcessCAS = timeToProcessCAS;
+ }
+
public boolean isPendingReply() {
return pendingReply;
}
Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint.java?rev=620542&r1=620541&r2=620542&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint.java Mon Feb 11 09:43:21 2008
@@ -133,4 +133,7 @@
public void setReplyDestinationFailed();
public boolean replyDestinationFailed();
+ public void setIdleTime( long anIdleTime );
+
+ public long getIdleTime();
}
Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint_impl.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint_impl.java?rev=620542&r1=620541&r2=620542&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint_impl.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/Endpoint_impl.java Mon Feb 11 09:43:21 2008
@@ -102,6 +102,7 @@
private int initialHeapSize;
private volatile boolean replyDestinationFailed;
+ private long idleTime=0;
public int getCommand()
{
return command;
@@ -532,4 +533,11 @@
return replyDestinationFailed;
}
-}
+ public long getIdleTime() {
+ return idleTime;
+ }
+
+ public void setIdleTime(long idleTime) {
+ this.idleTime = idleTime;
+ }
+}
\ No newline at end of file
Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAnalysisEngineController_impl.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAnalysisEngineController_impl.java?rev=620542&r1=620541&r2=620542&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAnalysisEngineController_impl.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAnalysisEngineController_impl.java Mon Feb 11 09:43:21 2008
@@ -321,13 +321,32 @@
return;
}
long time = System.nanoTime();
-
+ long totalCMProcessTime = 0; // stored total time spent producing ALL CASes
CasIterator casIterator = ae.processAndOutputNewCASes(aCAS);
+ // Store how long it took to call processAndOutputNewCASes()
+ totalCMProcessTime = ( System.nanoTime() - time);
long sequence = 1;
String newCasReferenceId = null;
- while (casIterator.hasNext())
+ long hasNextTime = 0; // stores time in hasNext()
+ long getNextTime = 0; // stores time in next();
+ long timeToProcessCAS = 0; // stores time in hasNext() and next() for each CAS
+ boolean moreCASesToProcess = true;
+ while (moreCASesToProcess)
{
+ hasNextTime = System.nanoTime();
+ if ( !casIterator.hasNext() )
+ {
+ moreCASesToProcess = false;
+ break;
+ }
+ // Measure how long it took to call hasNext()
+ timeToProcessCAS = (System.nanoTime()-hasNextTime);
+ getNextTime = System.nanoTime();
CAS casProduced = casIterator.next();
+ // Add how long it took to call next()
+ timeToProcessCAS += (System.nanoTime()- getNextTime);
+ // Add time to call hasNext() and next() to the running total
+ totalCMProcessTime += timeToProcessCAS;
// If the service is stopped or aborted, stop generating new CASes and just return the input CAS
if ( stopped || abortGeneratingCASes(aCasReferenceId))
{
@@ -348,9 +367,12 @@
OutOfTypeSystemData otsd = getInProcessCache().getOutOfTypeSystemData(aCasReferenceId);
MessageContext mContext = getInProcessCache().getMessageAccessorByReference(aCasReferenceId);
sequence++;
- newCasReferenceId = getInProcessCache().register(casProduced, mContext, otsd);
+ newCasReferenceId = getInProcessCache().register( casProduced, mContext, otsd);
+// newCasReferenceId = getInProcessCache().register(aCasReferenceId, sequence, casProduced, mContext, otsd);
CacheEntry entry = getInProcessCache().getCacheEntryForCAS(newCasReferenceId);
entry.setInputCasReferenceId(aCasReferenceId);
+ // Add to the cache how long it took to process the generated (subordinate) CAS
+ entry.setTimeToProcessCAS(timeToProcessCAS);
UIMAFramework.getLogger(CLASS_NAME).logrb(Level.FINE, getClass().getName(), "process", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE, "UIMAEE_produced_new_cas__FINE", new Object[] { Thread.currentThread().getName(),getComponentName(),newCasReferenceId, aCasReferenceId });
synchronized(syncObject)
{
@@ -362,7 +384,9 @@
LongNumericStatistic statistic = null;
if ( (statistic = getMonitor().getLongNumericStatistic("",Monitor.TotalAEProcessTime)) != null )
{
- statistic.increment(System.nanoTime() - time);
+// statistic.increment(System.nanoTime() - time);
+ // Increment how long it took to process the input CAS. This timer is exposed via JMX
+ statistic.increment(totalCMProcessTime);
}
if (newCasReferenceId != null)
@@ -375,7 +399,9 @@
}
getMonitor().resetCountingStatistic("", Monitor.ProcessErrorCount);
+ CacheEntry entry = getInProcessCache().getCacheEntryForCAS(aCasReferenceId);
+ entry.setTimeToProcessCAS(totalCMProcessTime);
getOutputChannel().sendReply(aCasReferenceId, anEndpoint);
getServicePerformance().incrementNumberOfCASesProcessed();
}
Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessResponseHandler.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessResponseHandler.java?rev=620542&r1=620541&r2=620542&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessResponseHandler.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/handler/input/ProcessResponseHandler.java Mon Feb 11 09:43:21 2008
@@ -58,6 +58,55 @@
super(aName);
}
+ private void aggregateDelegateStats(MessageContext aMessageContext, String aCasReferenceId) throws AsynchAEException
+ {
+ try
+ {
+ CacheEntry entry = getController().getInProcessCache().getCacheEntryForCAS(aCasReferenceId);
+ if ( entry == null )
+ {
+ throw new AsynchAEException("CasReferenceId:"+aCasReferenceId+" Not Found in the Cache.");
+ }
+ String inputCasReferenceId = entry.getInputCasReferenceId();
+ if ( inputCasReferenceId != null &&
+ getController().getInProcessCache().entryExists(inputCasReferenceId) )
+ {
+ // Get entry for the input CAS
+ entry = getController().
+ getInProcessCache().
+ getCacheEntryForCAS(inputCasReferenceId);
+ }
+ if (aMessageContext.propertyExists(AsynchAEMessage.TimeToSerializeCAS))
+ {
+ long timeToSerializeCAS = ((Long) aMessageContext.getMessageLongProperty(AsynchAEMessage.TimeToSerializeCAS)).longValue();
+ entry.incrementTimeToSerializeCAS(timeToSerializeCAS);
+ }
+ if (aMessageContext.propertyExists(AsynchAEMessage.TimeToDeserializeCAS))
+ {
+ long timeToDeserializeCAS = ((Long) aMessageContext.getMessageLongProperty(AsynchAEMessage.TimeToDeserializeCAS)).longValue();
+ entry.incrementTimeToDeserializeCAS(timeToDeserializeCAS);
+ }
+ if (aMessageContext.propertyExists(AsynchAEMessage.TimeWaitingForCAS))
+ {
+ long timeWaitingForCAS = ((Long) aMessageContext.getMessageLongProperty(AsynchAEMessage.TimeWaitingForCAS)).longValue();
+ entry.incrementTimeWaitingForCAS(timeWaitingForCAS);
+ }
+ if (aMessageContext.propertyExists(AsynchAEMessage.TimeInProcessCAS))
+ {
+ long timeInProcessCAS = ((Long) aMessageContext.getMessageLongProperty(AsynchAEMessage.TimeInProcessCAS)).longValue();
+ entry.incrementTimeToProcessCAS(timeInProcessCAS);
+ }
+
+ }
+ catch( AsynchAEException e)
+ {
+ throw e;
+ }
+ catch( Exception e)
+ {
+ throw new AsynchAEException(e);
+ }
+ }
private void computeStats(MessageContext aMessageContext, String aCasReferenceId) throws AsynchAEException
{
if (aMessageContext.propertyExists(AsynchAEMessage.TimeInService))
@@ -80,6 +129,12 @@
UIMAFramework.getLogger(CLASS_NAME).logrb(Level.FINE, CLASS_NAME.getName(),
"computeStats", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE, "UIMAEE_show_time_spent_in_comms__FINE",
new Object[] { aCasReferenceId, (double) totalTimeInComms / (double) 1000000, aMessageContext.getEndpoint() });
+ }
+
+ if ( getController() instanceof AggregateAnalysisEngineController )
+ {
+ aggregateDelegateStats( aMessageContext, aCasReferenceId );
+ }
if ( aMessageContext.propertyExists(AsynchAEMessage.DelegateStats) )
{
@@ -111,7 +166,6 @@
}
}
}
- }
}
private Endpoint lookupEndpoint(String anEndpointName, String aCasReferenceId)
Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/message/AsynchAEMessage.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/message/AsynchAEMessage.java?rev=620542&r1=620541&r2=620542&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/message/AsynchAEMessage.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/message/AsynchAEMessage.java Mon Feb 11 09:43:21 2008
@@ -19,6 +19,7 @@
package org.apache.uima.aae.message;
+
public interface AsynchAEMessage
{
public static final String TotalTimeSpentInAnalytic = "TimeInAnalytic";
@@ -45,6 +46,7 @@
public static final String TimeToSerializeCAS = "TimeToSerializeCAS";
public static final String TimeToDeserializeCAS = "TimeToDeserializeCAS";
public static final String TimeWaitingForCAS = "TimeWaitingForCAS";
+ public static final String TimeInProcessCAS = "TimeInProcessCAS";
public static final String IdleTime = "IdleTime";
public static final String CAS = "CAS";