costin      02/05/15 12:41:27

  Modified:    jk/native2/common jk_worker_ajp13.c
  Log:
  Time the requests.
  
  Revision  Changes    Path
  1.21      +56 -41    jakarta-tomcat-connectors/jk/native2/common/jk_worker_ajp13.c
  
  Index: jk_worker_ajp13.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_ajp13.c,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- jk_worker_ajp13.c 14 May 2002 20:41:05 -0000      1.20
  +++ jk_worker_ajp13.c 15 May 2002 19:41:26 -0000      1.21
  @@ -74,7 +74,6 @@
   #include "jk_objCache.h"
   #include "jk_registry.h"
   
  -
   #define AJP_DEF_RETRY_ATTEMPTS    (2)
   #define AJP14_PROTO 14
   #define AJP13_PROTO 13
  @@ -213,10 +212,13 @@
           env->l->jkLog(env, env->l, JK_LOG_INFO, "endpoint.close() %s\n",
                         ae->worker->mbean->name);
   
  -    ae->reuse = JK_FALSE;
  +    /*     ae->reuse = JK_FALSE; */
       if( ae->worker->channel != NULL )
           ae->worker->channel->close( env, ae->worker->channel, ae );
       
  +    ae->sd=-1;
  +    ae->recoverable=JK_TRUE;
  +    
       ae->cPool->reset( env, ae->cPool );
       /* ae->cPool->close( env, ae->cPool ); */
   
  @@ -254,7 +256,11 @@
   
       /* We just reconnected, reset error state
        */
  -    ae->worker->in_error_state=0;
  +    ae->worker->in_error_state=JK_FALSE;
  +
  +#ifdef HAS_APR
  +    ae->stats->connectedTime=apr_time_now();
  +#endif
       
       /** XXX use a 'connected' field */
       if( ae->sd == -1 ) ae->sd=0;
  @@ -297,8 +303,8 @@
   */
   static int JK_METHOD
   jk2_worker_ajp14_sendAndReconnect(jk_env_t *env, jk_worker_t *worker,
  -                              jk_ws_service_t *s,
  -                              jk_endpoint_t   *e )
  +                                  jk_ws_service_t *s,
  +                                  jk_endpoint_t   *e )
   {
       int attempt;
       int err=JK_OK;
  @@ -319,10 +325,12 @@
                   env->l->jkLog(env, env->l, JK_LOG_ERROR,
                                 "ajp14.service() failed to connect endpoint errno=%d 
%s\n",
                                 errno, strerror( errno ));
  +
  +                e->worker->in_error_state=JK_TRUE;
                   return err;
               }
           }
  -        /* e->request->dump(env, e->request, "Before sending "); */
  +
           err=e->worker->channel->send( env, e->worker->channel, e,
                                         e->request );
   
  @@ -334,32 +342,12 @@
               break;
           }
   
  -        if( e->recoverable != JK_TRUE ) {
  -            env->l->jkLog(env, env->l, JK_LOG_ERROR,
  -                     "ajp14.service() error sending request %s, giving up\n",
  -                     worker->mbean->name);
  -            return JK_ERR;
  -        }
  -        
           env->l->jkLog(env, env->l, JK_LOG_ERROR,
                         "ajp14.service() error sending, reconnect %s %d %d %s\n",
                         e->worker->channelName, err, errno, strerror(errno));
   
           channel->close( env, channel, e );
  -        err=jk2_worker_ajp14_connect(env, e); 
  -
  -        if( err != JK_OK ) {
  -            env->l->jkLog(env, env->l, JK_LOG_ERROR,
  -                     "ajp14.service() failed to reconnect endpoint errno=%d\n",
  -                     errno);
  -            return JK_ERR;
  -        }
  -
  -        /*
  -         * After we are connected, each error that we are going to
  -         * have is probably unrecoverable
  -         */
  -        e->recoverable = JK_FALSE;
  +        e->sd=-1;
       }
       return JK_OK;
   }
  @@ -372,13 +360,14 @@
   {
       int err;
   
  +    e->recoverable = JK_TRUE;
  +    s->is_recoverable_error = JK_TRUE;
  +
       err=jk2_worker_ajp14_sendAndReconnect( env, worker, s, e );
       if( err!=JK_OK )
           return err;
       
       /* We should have a channel now, send the post data */
  -    s->is_recoverable_error = JK_TRUE;
  -    e->recoverable = JK_TRUE;
   
       /* Prepare to send some post data ( ajp13 proto ). We do that after the
        request was sent ( we're receiving data from client, can be slow, no
  @@ -405,6 +394,13 @@
           }
           err= e->worker->channel->send( env, e->worker->channel, e,
                                          e->post );
  +        if( err != JK_OK ) {
  +            e->recoverable = JK_FALSE;
  +            s->is_recoverable_error = JK_FALSE;
  +            env->l->jkLog(env, env->l, JK_LOG_ERROR,
  +                          "ajp14.service() Error receiving initial post \n");
  +            return JK_ERR;
  +        }
       }
   
       err = e->worker->workerEnv->processCallbacks(env, e->worker->workerEnv,
  @@ -471,13 +467,15 @@
       }
       
       e->currentRequest=s;
  +
  +    /* XXX configurable ? */
  +    strncpy( e->stats->active, s->req_uri, 64);
       
       /* Prepare the messages we'll use.*/ 
       e->request->reset( env, e->request );
       e->reply->reset( env, e->reply );
       e->post->reset( env, e->post );
       
  -    e->reuse = JK_FALSE;
       s->is_recoverable_error = JK_TRUE;
       /* Up to now, we can recover */
       e->recoverable = JK_TRUE;
  @@ -543,7 +541,7 @@
           return JK_ERR;
       }
       
  -    if ( w->in_error_state ) {
  +    if( ! e->recoverable ||  w->in_error_state ) {
           jk2_close_endpoint(env, e);
           /*     if( w->mbean->debug > 0 )  */
           env->l->jkLog(env, env->l, JK_LOG_INFO,
  @@ -592,11 +590,7 @@
       if( !csOk ) return JK_ERR;
   
       {
  -        char *epName=ajp14->mbean->pool->calloc( env, ajp14->mbean->pool, 20);
  -
  -        sprintf( epName, "%d", ajp14->endpointMap->size( env, ajp14->endpointMap ));
  -        
  -        jkb=env->createBean2( env, ajp14->mbean->pool,  "endpoint", epName );
  +        jkb=env->createBean2( env, ajp14->mbean->pool,  "endpoint", NULL );
           if( jkb==NULL ) {
               JK_LEAVE_CS( &ajp14->cs, csOk );
               return JK_ERR;
  @@ -606,9 +600,11 @@
           e->worker = ajp14;
           e->sd=-1;
   
  -        ajp14->endpointMap->add( env, ajp14->endpointMap, epName, jkb );
  +        ajp14->endpointMap->add( env, ajp14->endpointMap, jkb->localName, jkb );
                                    
           *eP = e;
  +
  +        ajp14->workerEnv->addEndpoint( env, ajp14->workerEnv, e );
       }
       JK_LEAVE_CS( &ajp14->cs, csOk );
           
  @@ -633,18 +629,37 @@
       /* Get endpoint from the pool */
       jk2_worker_ajp14_getEndpoint( env, w, &e );
   
  -    err=jk2_worker_ajp14_service1( env, w, s, e );
  -
  -    if( err!=JK_OK ) {
  -        w->in_error_state=JK_TRUE;
  +#ifdef HAS_APR
  +    if( s->uriEnv->timing == JK_TRUE ) {
  +        e->stats->startTime=s->startTime;
  +        e->stats->jkStartTime=e->stats->connectedTime=apr_time_now();
  +        if(e->stats->startTime==0)
  +            e->stats->startTime=e->stats->jkStartTime;
       }
  +#endif
  +    
  +    err=jk2_worker_ajp14_service1( env, w, s, e );
   
  +    /* One error doesn't mean the whole worker is in error state.
  +     */
       if( err==JK_OK ) {
           e->stats->reqCnt++;
       } else {
           e->stats->errCnt++;
       }
   
  +#ifdef HAS_APR
  +    if( s->uriEnv->timing == JK_TRUE ) {
  +        apr_time_t reqTime;
  +
  +        e->stats->endTime=apr_time_now();
  +        reqTime=e->stats->endTime - e->stats->startTime;
  +    
  +        e->stats->totalTime += reqTime;
  +        if( e->stats->maxTime < reqTime )
  +            e->stats->maxTime=reqTime;
  +    }
  +#endif
       jk2_worker_ajp14_done( env, w, e);
       return err;
   }
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to