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";