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]

Reply via email to