billbarker 2004/06/04 23:28:05 Modified: coyote/src/java/org/apache/coyote RequestGroupInfo.java Log: Remember the Requests stats even after the Request has gone to that great GC in the sky. Fix for Bug #29339 Revision Changes Path 1.5 +29 -7 jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/RequestGroupInfo.java Index: RequestGroupInfo.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/RequestGroupInfo.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- RequestGroupInfo.java 24 Feb 2004 08:54:29 -0000 1.4 +++ RequestGroupInfo.java 5 Jun 2004 06:28:05 -0000 1.5 @@ -24,17 +24,33 @@ */ public class RequestGroupInfo { ArrayList processors=new ArrayList(); + private long deadMaxTime = 0; + private long deadProcessingTime = 0; + private int deadRequestCount = 0; + private int deadErrorCount = 0; + private long deadBytesReceived = 0; + private long deadBytesSent = 0; public synchronized void addRequestProcessor( RequestInfo rp ) { processors.add( rp ); } public synchronized void removeRequestProcessor( RequestInfo rp ) { - processors.remove( rp ); + if( rp != null ) { + if( deadMaxTime < rp.getMaxTime() ) + deadMaxTime = rp.getMaxTime(); + deadProcessingTime += rp.getProcessingTime(); + deadRequestCount += rp.getRequestCount(); + deadErrorCount += rp.getErrorCount(); + deadBytesReceived += rp.getBytesReceived(); + deadBytesSent += rp.getBytesSent(); + + processors.remove( rp ); + } } public synchronized long getMaxTime() { - long maxTime=0; + long maxTime=deadMaxTime; for( int i=0; i<processors.size(); i++ ) { RequestInfo rp=(RequestInfo)processors.get( i ); if( maxTime < rp.getMaxTime() ) maxTime=rp.getMaxTime(); @@ -44,6 +60,7 @@ // Used to reset the times public synchronized void setMaxTime(long maxTime) { + deadMaxTime = maxTime; for( int i=0; i<processors.size(); i++ ) { RequestInfo rp=(RequestInfo)processors.get( i ); rp.setMaxTime(maxTime); @@ -51,7 +68,7 @@ } public synchronized long getProcessingTime() { - long time=0; + long time=deadProcessingTime; for( int i=0; i<processors.size(); i++ ) { RequestInfo rp=(RequestInfo)processors.get( i ); time += rp.getProcessingTime(); @@ -60,6 +77,7 @@ } public synchronized void setProcessingTime(long totalTime) { + deadProcessingTime = totalTime; for( int i=0; i<processors.size(); i++ ) { RequestInfo rp=(RequestInfo)processors.get( i ); rp.setProcessingTime( totalTime ); @@ -67,7 +85,7 @@ } public synchronized int getRequestCount() { - int requestCount=0; + int requestCount=deadRequestCount; for( int i=0; i<processors.size(); i++ ) { RequestInfo rp=(RequestInfo)processors.get( i ); requestCount += rp.getRequestCount(); @@ -76,6 +94,7 @@ } public synchronized void setRequestCount(int requestCount) { + deadRequestCount = requestCount; for( int i=0; i<processors.size(); i++ ) { RequestInfo rp=(RequestInfo)processors.get( i ); rp.setRequestCount( requestCount ); @@ -83,7 +102,7 @@ } public synchronized int getErrorCount() { - int requestCount=0; + int requestCount=deadErrorCount; for( int i=0; i<processors.size(); i++ ) { RequestInfo rp=(RequestInfo)processors.get( i ); requestCount += rp.getErrorCount(); @@ -92,6 +111,7 @@ } public synchronized void setErrorCount(int errorCount) { + deadErrorCount = errorCount; for( int i=0; i<processors.size(); i++ ) { RequestInfo rp=(RequestInfo)processors.get( i ); rp.setErrorCount( errorCount); @@ -99,7 +119,7 @@ } public synchronized long getBytesReceived() { - long bytes=0; + long bytes=deadBytesReceived; for( int i=0; i<processors.size(); i++ ) { RequestInfo rp=(RequestInfo)processors.get( i ); bytes += rp.getBytesReceived(); @@ -108,6 +128,7 @@ } public synchronized void setBytesReceived(long bytesReceived) { + deadBytesReceived = bytesReceived; for( int i=0; i<processors.size(); i++ ) { RequestInfo rp=(RequestInfo)processors.get( i ); rp.setBytesReceived( bytesReceived ); @@ -115,7 +136,7 @@ } public synchronized long getBytesSent() { - long bytes=0; + long bytes=deadBytesSent; for( int i=0; i<processors.size(); i++ ) { RequestInfo rp=(RequestInfo)processors.get( i ); bytes += rp.getBytesSent(); @@ -124,6 +145,7 @@ } public synchronized void setBytesSent(long bytesSent) { + deadBytesSent = bytesSent; for( int i=0; i<processors.size(); i++ ) { RequestInfo rp=(RequestInfo)processors.get( i ); rp.setBytesSent( bytesSent );
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]