costin      02/04/11 17:09:17

  Modified:    jk/native2/common jk_workerEnv.c
  Log:
  Config: make worker.lb the default worker ( instead of randomly choosing the first 
worker ).
  
  The 'worker.lb' ( the default worker ) will also be automatically created and 
configured
  to include all forwarding workers.
  
  Explicit configurations are possible - defining other load balancers with subsets
  of workers or specifiying explicit workers - but this default seems the easiest
  for most users.
  
  If you have more than one worker, the most reasonable thing is to load balance.
  There is an extra (small) overhead if you have a single worker and use the
  default lb, but in future we'll want to dynamically add/remove workers from lb.
  
  Revision  Changes    Path
  1.27      +31 -12    jakarta-tomcat-connectors/jk/native2/common/jk_workerEnv.c
  
  Index: jk_workerEnv.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_workerEnv.c,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- jk_workerEnv.c    11 Apr 2002 19:34:30 -0000      1.26
  +++ jk_workerEnv.c    12 Apr 2002 00:09:17 -0000      1.27
  @@ -59,7 +59,7 @@
    * Description: Workers controller                                         *
    * Author:      Gal Shachor <[EMAIL PROTECTED]>                           *
    * Author:      Henri Gomez <[EMAIL PROTECTED]>                               *
  - * Version:     $Revision: 1.26 $                                           *
  + * Version:     $Revision: 1.27 $                                           *
    ***************************************************************************/
   
   #include "jk_env.h"
  @@ -166,6 +166,7 @@
                                        jk_workerEnv_t *wEnv)
   {
       int i;
  +    jk_worker_t *lb=wEnv->defaultWorker;
   
       for( i=0; i< wEnv->worker_map->size( env, wEnv->worker_map ); i++ ) {
   
  @@ -173,6 +174,8 @@
           jk_worker_t *w= wEnv->worker_map->valueAt( env, wEnv->worker_map, i );
           int err;
   
  +        w->workerEnv=wEnv;
  +
           if( w->init != NULL ) {
               err=w->init(env, w);
       
  @@ -182,6 +185,17 @@
                   env->l->jkLog(env, env->l, JK_LOG_ERROR,
                                 "workerEnv.initWorkers() init failed for %s\n", 
                                 name); 
  +            } else {
  +                /* Add the worker automatically in the 'default' lb and in any 
group */
  +                if( strncmp( "worker.ajp13", w->mbean->name, 12 ) == 0 ) {
  +                    /* It's a forwarding worker */
  +                    lb->mbean->setAttribute(env, lb->mbean, "balanced_workers",
  +                                            w->mbean->name);
  +                }
  +
  +                /* XXX Find any 'group' property - find or create an lb for that
  +                   and register it
  +                */
               }
           }
       }
  @@ -293,7 +307,20 @@
                                            "config.file",
                                            "${serverRoot}/conf/workers2.properties" );
       }
  -    
  +
  +    /* Set default worker. It'll be used for all uris that have no worker
  +     */
  +    if( wEnv->defaultWorker == NULL ) {
  +        jk_worker_t *w=wEnv->worker_map->get( env, wEnv->worker_map, "worker.lb" );
  +        
  +        if( w==NULL ) {
  +            jk_bean_t *jkb=env->createBean2(env, wEnv->pool, "worker.lb", "" );
  +            w=jkb->object;
  +            env->l->jkLog(env, env->l, JK_LOG_ERROR, "workerEnv.init() create 
default worker %s\n",  jkb->name );
  +        }
  +        wEnv->defaultWorker= w;
  +    }
  +
       jk2_workerEnv_initChannels( env, wEnv );
       jk2_workerEnv_initWorkers( env, wEnv );
       jk2_workerEnv_initHandlers( env, wEnv );
  @@ -462,6 +489,8 @@
       int err=JK_TRUE;
       jk_worker_t *oldW = NULL;
   
  +    w->workerEnv=wEnv;
  +
       w->rPoolCache= jk2_objCache_create( env, w->pool  );
   
       err=w->rPoolCache->init( env, w->rPoolCache,
  @@ -477,9 +506,6 @@
               oldW->destroy(env, oldW);
       }
       
  -    if( wEnv->defaultWorker == NULL )
  -        wEnv->defaultWorker=w;
  -    
       return JK_TRUE;
   }
   
  @@ -513,13 +539,6 @@
       }
       w=(jk_worker_t *)jkb->object;
   
  -    w->workerEnv=wEnv;
  -
  -    w->rPoolCache= jk2_objCache_create( env, w->pool  );
  -    err=w->rPoolCache->init( env, w->rPoolCache,
  -                                    1024 ); /* XXX make it unbound */
  -    wEnv->worker_map->put(env, wEnv->worker_map, name, w, (void *)&oldW);
  -            
       return w;
   }
   
  
  
  

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

Reply via email to