cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-09-23 Thread mturk
mturk   2005/09/23 00:18:21

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Fix loadbalancer retries to allow usage of cachesize lower then
  number of threads. In case the worker is busy having no free endpoints,
  and the retries config value is larger the total number of workers in load
  balancer, for each consequitive attempt sleep for a 100 ms, rather then
  returning 503.
  
  Revision  ChangesPath
  1.95  +11 -10jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.94
  retrieving revision 1.95
  diff -u -r1.94 -r1.95
  --- jk_lb_worker.c16 Sep 2005 05:52:26 -  1.94
  +++ jk_lb_worker.c23 Sep 2005 07:18:21 -  1.95
  @@ -595,7 +595,7 @@
   
   while (num_of_workers) {
   worker_record_t *rec =
  -get_most_suitable_worker(p-worker, s, attempt++, l);
  +get_most_suitable_worker(p-worker, s, attempt, l);
   int rc;
   /* Do not reuse previous worker, because
* that worker already failed.
  @@ -650,20 +650,21 @@
   else {
   /* If we can not get the endpoint
* mark the worker as busy rather then
  - * as in error
  + * as in error if the attemp number is
  + * greater then the number of retries.
*/
  -if (p-worker-s-retries  num_of_workers)
  +attempt++;
  +if (attempt  p-worker-s-retries) {
   rec-s-is_busy = JK_TRUE;
  +num_of_workers = 0;
  +}
   jk_log(l, JK_LOG_INFO,
  could not get free endpoint for worker %s 
(attempt %d),
  rec-s-name, attempt);
  -/* Decrement the worker count and try another worker */
  -if (attempt  p-worker-s-retries)
  -num_of_workers = 0;
  -/* In case of retries  3 sleep 100 ms
  - * on each next attempt.
  +/* In case of attempt  num of workers sleep for 100 ms
  + * on each consequtive attempt.
*/
  -else if (attempt  JK_RETRIES)
  +if (attempt  p-worker-num_of_workers)
   jk_sleep_def();
   continue;
   }
  
  
  

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



Re: Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-09-23 Thread customerservice
Hi, we have received
 your request and will contact you as soon as possible.

Thank you.


The Dreamsailing Staff
www.dreamsailing.it
[EMAIL PROTECTED]
---
DreamSailing s.r.l.
Gruppo Metauro Mare

- Milano
Corso di Porta Romana, 101 - 20122 Milano
Tel. +39 02 55015773
Fax. +39 02 59903461

- Fano
Viale Adriatico, 2 - 61032 Fano
Tel. +39 0721 820768
Fax. +39 0721 806929

- Bologna
Strada Maggiore, 71/A 40125 Bologna
Tel. +39 051 309332
Fax. +39 051 343342
---




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



Re: Re: Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-09-23 Thread customerservice
Hi, we have received
 your request and will contact you as soon as possible.

Thank you.


The Dreamsailing Staff
www.dreamsailing.it
[EMAIL PROTECTED]
---
DreamSailing s.r.l.
Gruppo Metauro Mare

- Milano
Corso di Porta Romana, 101 - 20122 Milano
Tel. +39 02 55015773
Fax. +39 02 59903461

- Fano
Viale Adriatico, 2 - 61032 Fano
Tel. +39 0721 820768
Fax. +39 0721 806929

- Bologna
Strada Maggiore, 71/A 40125 Bologna
Tel. +39 051 309332
Fax. +39 051 343342
---




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



Re: Re: Re: Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-09-23 Thread customerservice
Hi, we have received
 your request and will contact you as soon as possible.

Thank you.


The Dreamsailing Staff
www.dreamsailing.it
[EMAIL PROTECTED]
---
DreamSailing s.r.l.
Gruppo Metauro Mare

- Milano
Corso di Porta Romana, 101 - 20122 Milano
Tel. +39 02 55015773
Fax. +39 02 59903461

- Fano
Viale Adriatico, 2 - 61032 Fano
Tel. +39 0721 820768
Fax. +39 0721 806929

- Bologna
Strada Maggiore, 71/A 40125 Bologna
Tel. +39 051 309332
Fax. +39 051 343342
---




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



Re: Re: Re: Re: Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-09-23 Thread customerservice
Hi, we have received
 your request and will contact you as soon as possible.

Thank you.


The Dreamsailing Staff
www.dreamsailing.it
[EMAIL PROTECTED]
---
DreamSailing s.r.l.
Gruppo Metauro Mare

- Milano
Corso di Porta Romana, 101 - 20122 Milano
Tel. +39 02 55015773
Fax. +39 02 59903461

- Fano
Viale Adriatico, 2 - 61032 Fano
Tel. +39 0721 820768
Fax. +39 0721 806929

- Bologna
Strada Maggiore, 71/A 40125 Bologna
Tel. +39 051 309332
Fax. +39 051 343342
---




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



Re: Re: Re: Re: Re: Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-09-23 Thread customerservice
Hi, we have received
 your request and will contact you as soon as possible.

Thank you.


The Dreamsailing Staff
www.dreamsailing.it
[EMAIL PROTECTED]
---
DreamSailing s.r.l.
Gruppo Metauro Mare

- Milano
Corso di Porta Romana, 101 - 20122 Milano
Tel. +39 02 55015773
Fax. +39 02 59903461

- Fano
Viale Adriatico, 2 - 61032 Fano
Tel. +39 0721 820768
Fax. +39 0721 806929

- Bologna
Strada Maggiore, 71/A 40125 Bologna
Tel. +39 051 309332
Fax. +39 051 343342
---




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



Re: Re: Re: Re: Re: Re: Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-09-23 Thread customerservice
Hi, we have received
 your request and will contact you as soon as possible.

Thank you.


The Dreamsailing Staff
www.dreamsailing.it
[EMAIL PROTECTED]
---
DreamSailing s.r.l.
Gruppo Metauro Mare

- Milano
Corso di Porta Romana, 101 - 20122 Milano
Tel. +39 02 55015773
Fax. +39 02 59903461

- Fano
Viale Adriatico, 2 - 61032 Fano
Tel. +39 0721 820768
Fax. +39 0721 806929

- Bologna
Strada Maggiore, 71/A 40125 Bologna
Tel. +39 051 309332
Fax. +39 051 343342
---




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



Re: Re: Re: Re: Re: Re: Re: Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-09-23 Thread customerservice
Hi, we have received
 your request and will contact you as soon as possible.

Thank you.


The Dreamsailing Staff
www.dreamsailing.it
[EMAIL PROTECTED]
---
DreamSailing s.r.l.
Gruppo Metauro Mare

- Milano
Corso di Porta Romana, 101 - 20122 Milano
Tel. +39 02 55015773
Fax. +39 02 59903461

- Fano
Viale Adriatico, 2 - 61032 Fano
Tel. +39 0721 820768
Fax. +39 0721 806929

- Bologna
Strada Maggiore, 71/A 40125 Bologna
Tel. +39 051 309332
Fax. +39 051 343342
---




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



Re: Re: Re: Re: Re: Re: Re: Re: Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-09-23 Thread customerservice
Hi, we have received
 your request and will contact you as soon as possible.

Thank you.


The Dreamsailing Staff
www.dreamsailing.it
[EMAIL PROTECTED]
---
DreamSailing s.r.l.
Gruppo Metauro Mare

- Milano
Corso di Porta Romana, 101 - 20122 Milano
Tel. +39 02 55015773
Fax. +39 02 59903461

- Fano
Viale Adriatico, 2 - 61032 Fano
Tel. +39 0721 820768
Fax. +39 0721 806929

- Bologna
Strada Maggiore, 71/A 40125 Bologna
Tel. +39 051 309332
Fax. +39 051 343342
---




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



Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-09-23 Thread customerservice
Hi, we have received
 your request and will contact you as soon as possible.

Thank you.


The Dreamsailing Staff
www.dreamsailing.it
[EMAIL PROTECTED]
---
DreamSailing s.r.l.
Gruppo Metauro Mare

- Milano
Corso di Porta Romana, 101 - 20122 Milano
Tel. +39 02 55015773
Fax. +39 02 59903461

- Fano
Viale Adriatico, 2 - 61032 Fano
Tel. +39 0721 820768
Fax. +39 0721 806929

- Bologna
Strada Maggiore, 71/A 40125 Bologna
Tel. +39 051 309332
Fax. +39 051 343342
---




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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-09-23 Thread mturk
mturk   2005/09/23 00:32:24

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Fix compile time warnings. No functional change.
  
  Revision  ChangesPath
  1.96  +4 -4  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.95
  retrieving revision 1.96
  diff -u -r1.95 -r1.96
  --- jk_lb_worker.c23 Sep 2005 07:18:21 -  1.95
  +++ jk_lb_worker.c23 Sep 2005 07:32:24 -  1.96
  @@ -126,8 +126,8 @@
   result = id_start;
   }
   else {
  -int osz = strlen(result) + 1;
  -int sz = osz + strlen(id_start) + 1;
  +size_t osz = strlen(result) + 1;
  +size_t sz = osz + strlen(id_start) + 1;
   result =
   jk_pool_realloc(s-pool, sz, result, osz);
   strcat(result, ;);
  @@ -664,7 +664,7 @@
   /* In case of attempt  num of workers sleep for 100 ms
* on each consequtive attempt.
*/
  -if (attempt  p-worker-num_of_workers)
  +if (attempt  (int)p-worker-num_of_workers)
   jk_sleep_def();
   continue;
   }
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.c jk_shm.h jk_status.c

2005-09-15 Thread mturk
mturk   2005/09/15 22:52:26

  Modified:jk/native/common jk_lb_worker.c jk_shm.c jk_shm.h
jk_status.c
  Log:
  Fix bug #36525 by properly aligning shared memory header struct.
  This patch was provided and investigated by Rainer Jung. Thaks!
  
  Also bring back 64 bit sizes, because the problem was not with them,
  but rather they've cause different struct alignment.
  
  Revision  ChangesPath
  1.94  +5 -5  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.93
  retrieving revision 1.94
  diff -u -r1.93 -r1.94
  --- jk_lb_worker.c14 Sep 2005 06:50:14 -  1.93
  +++ jk_lb_worker.c16 Sep 2005 05:52:26 -  1.94
  @@ -225,8 +225,8 @@
   {
   unsigned int i;
   int total_factor = 0;
  -size_t mytraffic = 0;
  -size_t curmin = 0;
  +jk_u64_t mytraffic = 0;
  +jk_u64_t curmin = 0;
   
   worker_record_t *candidate = NULL;
   if (p-lblock == JK_LB_LOCK_PESSIMISTIC)
  @@ -328,8 +328,8 @@
jk_logger_t *l)
   {
   unsigned int i;
  -size_t mytraffic = 0;
  -size_t curmin = 0;
  +jk_u64_t mytraffic = 0;
  +jk_u64_t curmin = 0;
   worker_record_t *candidate = NULL;
   double diff;
   time_t now = time(NULL);
  
  
  
  1.20  +33 -22jakarta-tomcat-connectors/jk/native/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_shm.c,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- jk_shm.c  12 Sep 2005 12:53:05 -  1.19
  +++ jk_shm.c  16 Sep 2005 05:52:26 -  1.20
  @@ -26,8 +26,8 @@
   #include jk_mt.h
   #include jk_shm.h
   
  -/** jk shm header record structure */
  -struct jk_shm_header
  +/** jk shm header core data structure */
  +struct jk_shm_header_data
   {
   /* Shared memory magic JK_SHM_MAGIC */
   char   magic[8];
  @@ -36,6 +36,17 @@
   unsigned int childs;
   unsigned int workers;
   time_t modified;
  +};
  +
  +typedef struct jk_shm_header_data jk_shm_header_data_t;
  +
  +/** jk shm header record structure */
  +struct jk_shm_header
  +{
  +union {
  +jk_shm_header_data_t data;
  +char alignbuf[JK_SHM_ALIGN(sizeof(jk_shm_header_data_t))];
  +};
   char   buf[1];
   };
   
  @@ -116,13 +127,13 @@
   jk_shmem.filename = memory;
   jk_shmem.fd   = 0;
   jk_shmem.attached = 0;
  -memcpy(jk_shmem.hdr-magic, shm_signature, 8);
  -jk_shmem.hdr-size = sz;
  +memcpy(jk_shmem.hdr-data.magic, shm_signature, 8);
  +jk_shmem.hdr-data.size = sz;
   JK_INIT_CS((jk_shmem.cs), rc);
   if (JK_IS_DEBUG_LEVEL(l))
   jk_log(l, JK_LOG_DEBUG,
  Initialized shared memory size=%u free=%u addr=%#lx,
  -   jk_shmem.size, jk_shmem.hdr-size, jk_shmem.hdr);
  +   jk_shmem.size, jk_shmem.hdr-data.size, jk_shmem.hdr);
   JK_TRACE_EXIT(l);
   return 0;
   }
  @@ -132,12 +143,12 @@
   JK_TRACE_ENTER(l);
   if (!jk_shm_open(fname, sz, l)) {
   jk_shmem.attached = 1;
  -jk_shmem.hdr-childs++;
  +jk_shmem.hdr-data.childs++;
   if (JK_IS_DEBUG_LEVEL(l))
   jk_log(l, JK_LOG_DEBUG,
  Attached shared memory [%d] size=%u free=%u addr=%#lx,
  -   jk_shmem.hdr-childs, jk_shmem.hdr-size,
  -   jk_shmem.hdr-size - jk_shmem.hdr-pos,
  +   jk_shmem.hdr-data.childs, jk_shmem.hdr-data.size,
  +   jk_shmem.hdr-data.size - jk_shmem.hdr-data.pos,
  jk_shmem.hdr);
   JK_TRACE_EXIT(l);
   return 0;
  @@ -306,20 +317,20 @@
   /* Clear shared memory */
   if (!attached) {
   memset(jk_shmem.hdr, 0, jk_shmem.size);
  -memcpy(jk_shmem.hdr-magic, shm_signature, 8);
  -jk_shmem.hdr-size = sz;
  +memcpy(jk_shmem.hdr-data.magic, shm_signature, 8);
  +jk_shmem.hdr-data.size = sz;
   if (JK_IS_DEBUG_LEVEL(l))
   jk_log(l, JK_LOG_DEBUG,
  Initialized shared memory size=%u free=%u addr=%#lx,
  -   jk_shmem.size, jk_shmem.hdr-size, jk_shmem.hdr);
  +   jk_shmem.size, jk_shmem.hdr-data.size, jk_shmem.hdr);
   }
   else {
  -jk_shmem.hdr-childs++;
  +jk_shmem.hdr-data.childs++;
   if (JK_IS_DEBUG_LEVEL(l))
   jk_log(l, JK_LOG_INFO,
  Attached shared memory [%d] size=%u free=%u addr=%#lx,
  -   jk_shmem.hdr-childs, jk_shmem.hdr-size,
  -   jk_shmem.hdr-size - jk_shmem.hdr-pos,
  +  

cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.c jk_shm.h jk_status.c

2005-09-12 Thread mturk
mturk   2005/09/12 05:53:06

  Modified:jk/native/common jk_lb_worker.c jk_shm.c jk_shm.h
jk_status.c
  Log:
  Fix bug #36525 by not using 64 bit ints in shared memory.
  For some strange reasons both Solaris and Irix are core dumping.
  To deal with long running data implement read and transferred as
  function of time, so that the troughput is stored rather then absolute
  value
  
  Revision  ChangesPath
  1.92  +39 -12jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.91
  retrieving revision 1.92
  diff -u -r1.91 -r1.92
  --- jk_lb_worker.c14 Jun 2005 06:34:13 -  1.91
  +++ jk_lb_worker.c12 Sep 2005 12:53:05 -  1.92
  @@ -225,12 +225,27 @@
   {
   unsigned int i;
   int total_factor = 0;
  -jk_u64_t mytraffic = 0;
  -jk_u64_t curmin = 0;
  +size_t mytraffic = 0;
  +size_t curmin = 0;
   
   worker_record_t *candidate = NULL;
   if (p-lblock == JK_LB_LOCK_PESSIMISTIC)
   jk_shm_lock();
  +
  +if (p-lbmethod == JK_LB_BYTRAFFIC) {
  +double diff;
  +time_t now = time(NULL);
  +/* Update transfer rate for each worker */
  +for (i = 0; i  p-num_of_workers; i++) {
  +diff = difftime(now, p-lb_workers[i].s-service_time);
  +if (diff  JK_SERVICE_TRANSFER_INTERVAL) {
  +p-lb_workers[i].s-service_time = now;
  +p-lb_workers[i].s-readed /= JK_SERVICE_TRANSFER_INTERVAL;
  +p-lb_workers[i].s-transferred /= 
JK_SERVICE_TRANSFER_INTERVAL;
  +}
  +}
  +}
  +
   /* First try to see if we have available candidate */
   for (i = 0; i  p-num_of_workers; i++) {
   /* Skip all workers that are not member of domain */
  @@ -248,14 +263,14 @@
   candidate = p-lb_workers[i];
   }
   else {
  -mytraffic = 
(p-lb_workers[i].s-transferred/p-lb_workers[i].s-lb_factor) +
  -
(p-lb_workers[i].s-readed/p-lb_workers[i].s-lb_factor);
  +mytraffic = (p-lb_workers[i].s-transferred +
  + p-lb_workers[i].s-readed ) / 
p-lb_workers[i].s-lb_factor;
   if (!candidate || mytraffic  curmin) {
   candidate = p-lb_workers[i];
   curmin = mytraffic;
   }
   }
  -}
  +}
   }
   
   if (candidate) {
  @@ -313,12 +328,22 @@
jk_logger_t *l)
   {
   unsigned int i;
  -jk_u64_t mytraffic = 0;
  -jk_u64_t curmin = 0;
  +size_t mytraffic = 0;
  +size_t curmin = 0;
   worker_record_t *candidate = NULL;
  +double diff;
  +time_t now = time(NULL);
   
   if (p-lblock == JK_LB_LOCK_PESSIMISTIC)
   jk_shm_lock();
  +for (i = 0; i  p-num_of_workers; i++) {
  +diff = difftime(now, p-lb_workers[i].s-service_time);
  +if (diff  JK_SERVICE_TRANSFER_INTERVAL) {
  +p-lb_workers[i].s-service_time = now;
  +p-lb_workers[i].s-readed /= JK_SERVICE_TRANSFER_INTERVAL;
  +p-lb_workers[i].s-transferred /= JK_SERVICE_TRANSFER_INTERVAL;
  +}
  +}
   /* First try to see if we have available candidate */
   for (i = 0; i  p-num_of_workers; i++) {
   /* If the worker is in error state run
  @@ -587,8 +612,8 @@
   jk_log(l, JK_LOG_DEBUG,
  service worker=%s jvm_route=%s,
  rec-s-name, s-jvm_route);
  -rec-s-elected++;
   if (rc  end) {
  +rec-s-elected++;
   /* Reset endpoint read and write sizes for
* this request.
*/
  @@ -602,8 +627,10 @@
   rec-s-max_busy = rec-s-busy;
   service_stat = end-service(end, s, l, 
is_service_error);
   /* Update partial reads and writes if any */
  -rec-s-readed += end-rd;
  -rec-s-transferred += end-wr;
  +if (p-worker-lbmethod == JK_LB_BYTRAFFIC) {
  +rec-s-readed += end-rd;
  +rec-s-transferred += end-wr;
  +}
   end-done(end, l);
   /* When returning the endpoint mark the worker as not 
busy.
* We have at least one endpoint free
  @@ -815,7 +842,7 @@
   }
   if (secret  (p-lb_workers[i].w-type == 
JK_AJP13_WORKER_TYPE ||
   p-lb_workers[i].w-type == JK_AJP14_WORKER_TYPE)) {

Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.h jk_status.c

2005-06-14 Thread jean-frederic clere

William A. Rowe, Jr. wrote:
Mladen; are you sure you weren't looking for 'long long', 
al la int64_t?  Falling over to the FPU is rarely the best

performance decision.


A little more coding is needed, because I have a related error (on ReliantUnix):
+++
/home/apache20/apache20/build/libtool --silent --mode=compile cc 
-I/home/apache20/apache20/include -g -DUSE_APACHE_MD5 -I ../common  -I /include 
-I /include/unix -DSVR4 -g -DHAVE_APR  -I/home/apache20/apache20/include 
-I/home/apache20/apache20/include -g -g -DSVR4 -c ../common/jk_ajp14.c

../common/jk_md5.h65: [error]:   CFE1020 identifier uint32_t is undefined
  typedef uint32_t JK_UINT4;
  ^
+++
I am going to add in configure some code to check for long long and 
sizeof(short/int/long).




Bill

At 02:55 AM 6/13/2005, [EMAIL PROTECTED] wrote:


mturk   2005/06/13 00:55:51

Modified:jk/native/common jk_lb_worker.c jk_shm.h jk_status.c
Log:
Use double instead size_t for trensferred/read, so that lb doesn't
break on trnasferred mode when 2G of data has been send/read.

-size_t mytraffic = 0;
-size_t curmin = 0;
+double mytraffic = 0;
+double curmin = 0;





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




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



Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.h jk_status.c

2005-06-14 Thread Mladen Turk

jean-frederic clere wrote:

William A. Rowe, Jr. wrote:

Mladen; are you sure you weren't looking for 'long long', al la 
int64_t?  Falling over to the FPU is rarely the best

performance decision.



A little more coding is needed, because I have a related error (on 
ReliantUnix):

undefined
  typedef uint32_t JK_UINT4;
  ^


Seems that the uint32_t is not inside includes referenced
by jk_global.h. Not sure what is the possible location
for that type on all platforms.

Perhaps u_int32_t would be more portable.

Regards,
Mladen.

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



Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.h jk_status.c

2005-06-14 Thread jean-frederic clere

Mladen Turk wrote:

jean-frederic clere wrote:


William A. Rowe, Jr. wrote:

Mladen; are you sure you weren't looking for 'long long', al la 
int64_t?  Falling over to the FPU is rarely the best

performance decision.




A little more coding is needed, because I have a related error (on 
ReliantUnix):

undefined
  typedef uint32_t JK_UINT4;
  ^



Seems that the uint32_t is not inside includes referenced
by jk_global.h. Not sure what is the possible location
for that type on all platforms.

Perhaps u_int32_t would be more portable.


I would prefer to add in configure something like:
+++
AC_CHECK_SIZEOF(char, 1)
AC_CHECK_SIZEOF(int, 4)
AC_CHECK_SIZEOF(long, 4)
AC_CHECK_SIZEOF(short, 2)
AC_CHECK_SIZEOF(long long, 8)
+++
and testing $ac_cv_sizeof_WHATWETESTED makes sure we right one.



Regards,
Mladen.

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




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



Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.h jk_status.c

2005-06-14 Thread Mladen Turk

jean-frederic clere wrote:

Mladen Turk wrote:



Perhaps u_int32_t would be more portable.



I would prefer to add in configure something like:
+++
AC_CHECK_SIZEOF(char, 1)
AC_CHECK_SIZEOF(int, 4)
AC_CHECK_SIZEOF(long, 4)
AC_CHECK_SIZEOF(short, 2)
AC_CHECK_SIZEOF(long long, 8)
+++
and testing $ac_cv_sizeof_WHATWETESTED makes sure we right one.



Yes, but all that we need is 32 bit unsigned integer for JK_UINT4
What will you use if the int is 64 bits?

Regards,
Mladen.

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



Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.h jk_status.c

2005-06-14 Thread jean-frederic clere

Mladen Turk wrote:

jean-frederic clere wrote:


Mladen Turk wrote:



Perhaps u_int32_t would be more portable.




I would prefer to add in configure something like:
+++
AC_CHECK_SIZEOF(char, 1)
AC_CHECK_SIZEOF(int, 4)
AC_CHECK_SIZEOF(long, 4)
AC_CHECK_SIZEOF(short, 2)
AC_CHECK_SIZEOF(long long, 8)
+++
and testing $ac_cv_sizeof_WHATWETESTED makes sure we right one.



Yes, but all that we need is 32 bit unsigned integer for JK_UINT4
What will you use if the int is 64 bits?


a long ;-)



Regards,
Mladen.

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




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



Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.h jk_status.c

2005-06-14 Thread Mladen Turk

jean-frederic clere wrote:

Mladen Turk wrote:


Yes, but all that we need is 32 bit unsigned integer for JK_UINT4
What will you use if the int is 64 bits?



a long ;-)



Right :)

You will need the portable.in in that case, right?

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



Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.h jk_status.c

2005-06-14 Thread jean-frederic clere

Mladen Turk wrote:

jean-frederic clere wrote:


Mladen Turk wrote:



Yes, but all that we need is 32 bit unsigned integer for JK_UINT4
What will you use if the int is 64 bits?




a long ;-)



Right :)

You will need the portable.in in that case, right?


Yes and I will ask Henri to check AS400 see jk_global.h:
+++
#if !defined(WIN32)  !defined(AS400)
#include portable.h
#else
+++



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




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



Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.h jk_status.c

2005-06-14 Thread Henri Gomez
What do you need on iSeries ?

2005/6/14, jean-frederic clere [EMAIL PROTECTED]:
 Mladen Turk wrote:
  jean-frederic clere wrote:
 
  Mladen Turk wrote:
 
 
  Yes, but all that we need is 32 bit unsigned integer for JK_UINT4
  What will you use if the int is 64 bits?
 
 
 
  a long ;-)
 
 
  Right :)
 
  You will need the portable.in in that case, right?
 
 Yes and I will ask Henri to check AS400 see jk_global.h:
 +++
 #if !defined(WIN32)  !defined(AS400)
 #include portable.h
 #else
 +++
 
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 


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



Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.h jk_status.c

2005-06-14 Thread jean-frederic clere

Henri Gomez wrote:

What do you need on iSeries ?


Just to know what to use to have:
JK_UINT4 (unsigned long of 32 bits) and JK_UINT8 (unsigned long long of 64 bits) 
 and to check status_strfsize().




2005/6/14, jean-frederic clere [EMAIL PROTECTED]:


Mladen Turk wrote:


jean-frederic clere wrote:



Mladen Turk wrote:



Yes, but all that we need is 32 bit unsigned integer for JK_UINT4
What will you use if the int is 64 bits?




a long ;-)



Right :)

You will need the portable.in in that case, right?


Yes and I will ask Henri to check AS400 see jk_global.h:
+++
#if !defined(WIN32)  !defined(AS400)
#include portable.h
#else
+++



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




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





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




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



Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.h jk_status.c

2005-06-14 Thread Henri Gomez
status_strfsize ? APR ?

2005/6/14, jean-frederic clere [EMAIL PROTECTED]:
 Henri Gomez wrote:
  What do you need on iSeries ?
 
 Just to know what to use to have:
 JK_UINT4 (unsigned long of 32 bits) and JK_UINT8 (unsigned long long of 64 
 bits)
   and to check status_strfsize().
 
 
  2005/6/14, jean-frederic clere [EMAIL PROTECTED]:
 
 Mladen Turk wrote:
 
 jean-frederic clere wrote:
 
 
 Mladen Turk wrote:
 
 
 Yes, but all that we need is 32 bit unsigned integer for JK_UINT4
 What will you use if the int is 64 bits?
 
 
 
 a long ;-)
 
 
 Right :)
 
 You will need the portable.in in that case, right?
 
 Yes and I will ask Henri to check AS400 see jk_global.h:
 +++
 #if !defined(WIN32)  !defined(AS400)
 #include portable.h
 #else
 +++
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 


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



Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.h jk_status.c

2005-06-14 Thread jean-frederic clere

Henri Gomez wrote:

status_strfsize ? APR ?


Nearly: jakarta-tomcat-connectors/jk/native/common/jk_status.c ;-)




2005/6/14, jean-frederic clere [EMAIL PROTECTED]:


Henri Gomez wrote:


What do you need on iSeries ?


Just to know what to use to have:
JK_UINT4 (unsigned long of 32 bits) and JK_UINT8 (unsigned long long of 64 bits)
 and to check status_strfsize().



2005/6/14, jean-frederic clere [EMAIL PROTECTED]:



Mladen Turk wrote:



jean-frederic clere wrote:




Mladen Turk wrote:




Yes, but all that we need is 32 bit unsigned integer for JK_UINT4
What will you use if the int is 64 bits?




a long ;-)



Right :)

You will need the portable.in in that case, right?


Yes and I will ask Henri to check AS400 see jk_global.h:
+++
#if !defined(WIN32)  !defined(AS400)
#include portable.h
#else
+++




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




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





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




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





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




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



Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.h jk_status.c

2005-06-14 Thread Henri Gomez
unsigned long is 32 bits and unsigned long long is 64 bits on iSeries


2005/6/14, Henri Gomez [EMAIL PROTECTED]:
 status_strfsize ? APR ?
 
 2005/6/14, jean-frederic clere [EMAIL PROTECTED]:
  Henri Gomez wrote:
   What do you need on iSeries ?
 
  Just to know what to use to have:
  JK_UINT4 (unsigned long of 32 bits) and JK_UINT8 (unsigned long long of 64 
  bits)
and to check status_strfsize().
 
  
   2005/6/14, jean-frederic clere [EMAIL PROTECTED]:
  
  Mladen Turk wrote:
  
  jean-frederic clere wrote:
  
  
  Mladen Turk wrote:
  
  
  Yes, but all that we need is 32 bit unsigned integer for JK_UINT4
  What will you use if the int is 64 bits?
  
  
  
  a long ;-)
  
  
  Right :)
  
  You will need the portable.in in that case, right?
  
  Yes and I will ask Henri to check AS400 see jk_global.h:
  +++
  #if !defined(WIN32)  !defined(AS400)
  #include portable.h
  #else
  +++
  
  
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
  
  
  
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
  
  
  
  
   -
   To unsubscribe, e-mail: [EMAIL PROTECTED]
   For additional commands, e-mail: [EMAIL PROTECTED]
  
  
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 


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



Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.h jk_status.c

2005-06-14 Thread Henri Gomez
ok, but couldn't build now from CVS, but it should works after
jk_u64_t is defined as unsigned long long.

Since we couldn't use portable.h on iSeries, it should be elsewhere ...

2005/6/14, jean-frederic clere [EMAIL PROTECTED]:
 Henri Gomez wrote:
  status_strfsize ? APR ?
 
 Nearly: jakarta-tomcat-connectors/jk/native/common/jk_status.c ;-)
 
 
 
  2005/6/14, jean-frederic clere [EMAIL PROTECTED]:
 
 Henri Gomez wrote:
 
 What do you need on iSeries ?
 
 Just to know what to use to have:
 JK_UINT4 (unsigned long of 32 bits) and JK_UINT8 (unsigned long long of 64 
 bits)
   and to check status_strfsize().
 
 
 2005/6/14, jean-frederic clere [EMAIL PROTECTED]:
 
 
 Mladen Turk wrote:
 
 
 jean-frederic clere wrote:
 
 
 
 Mladen Turk wrote:
 
 
 
 Yes, but all that we need is 32 bit unsigned integer for JK_UINT4
 What will you use if the int is 64 bits?
 
 
 
 a long ;-)
 
 
 Right :)
 
 You will need the portable.in in that case, right?
 
 Yes and I will ask Henri to check AS400 see jk_global.h:
 +++
 #if !defined(WIN32)  !defined(AS400)
 #include portable.h
 #else
 +++
 
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 


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



Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.h jk_status.c

2005-06-14 Thread jean-frederic clere

Henri Gomez wrote:

ok, but couldn't build now from CVS, but it should works after
jk_u64_t is defined as unsigned long long.

Since we couldn't use portable.h on iSeries, it should be elsewhere ...


Sure... I will add the need #if defined(AS400).





2005/6/14, jean-frederic clere [EMAIL PROTECTED]:
Henri Gomez wrote:


status_strfsize ? APR ?


Nearly: jakarta-tomcat-connectors/jk/native/common/jk_status.c ;-)




2005/6/14, jean-frederic clere [EMAIL PROTECTED]:



Henri Gomez wrote:



What do you need on iSeries ?


Just to know what to use to have:
JK_UINT4 (unsigned long of 32 bits) and JK_UINT8 (unsigned long long of 64 bits)
and to check status_strfsize().




2005/6/14, jean-frederic clere [EMAIL PROTECTED]:




Mladen Turk wrote:




jean-frederic clere wrote:





Mladen Turk wrote:





Yes, but all that we need is 32 bit unsigned integer for JK_UINT4
What will you use if the int is 64 bits?




a long ;-)



Right :)

You will need the portable.in in that case, right?


Yes and I will ask Henri to check AS400 see jk_global.h:
+++
#if !defined(WIN32)  !defined(AS400)
#include portable.h
#else
+++





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




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





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




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





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




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








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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.h jk_status.c

2005-06-13 Thread mturk
mturk   2005/06/13 00:55:51

  Modified:jk/native/common jk_lb_worker.c jk_shm.h jk_status.c
  Log:
  Use double instead size_t for trensferred/read, so that lb doesn't
  break on trnasferred mode when 2G of data has been send/read.
  
  Revision  ChangesPath
  1.90  +5 -5  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.89
  retrieving revision 1.90
  diff -u -r1.89 -r1.90
  --- jk_lb_worker.c15 May 2005 16:33:47 -  1.89
  +++ jk_lb_worker.c13 Jun 2005 07:55:51 -  1.90
  @@ -225,8 +225,8 @@
   {
   unsigned int i;
   int total_factor = 0;
  -size_t mytraffic = 0;
  -size_t curmin = 0;
  +double mytraffic = 0;
  +double curmin = 0;
   
   worker_record_t *candidate = NULL;
   if (p-lblock == JK_LB_LOCK_PESSIMISTIC)
  @@ -313,8 +313,8 @@
jk_logger_t *l)
   {
   unsigned int i;
  -size_t mytraffic = 0;
  -size_t curmin = 0;
  +double mytraffic = 0;
  +double curmin = 0;
   worker_record_t *candidate = NULL;
   
   if (p-lblock == JK_LB_LOCK_PESSIMISTIC)
  
  
  
  1.21  +3 -3  jakarta-tomcat-connectors/jk/native/common/jk_shm.h
  
  Index: jk_shm.h
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_shm.h,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- jk_shm.h  15 May 2005 11:23:50 -  1.20
  +++ jk_shm.h  13 Jun 2005 07:55:51 -  1.21
  @@ -81,9 +81,9 @@
   /* Statistical data */
   volatile time_t  error_time;
   /* Number of bytes read from remote */
  -volatile size_t  readed;
  +volatile double  readed;
   /* Number of bytes transferred to remote */
  -volatile size_t  transferred;
  +volatile double  transferred;
   /* Number of times the worker was elected */
   volatile size_t  elected;
   /* Number of non 200 responses */
  
  
  
  1.42  +4 -15 jakarta-tomcat-connectors/jk/native/common/jk_status.c
  
  Index: jk_status.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_status.c,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- jk_status.c   15 May 2005 15:22:05 -  1.41
  +++ jk_status.c   13 Jun 2005 07:55:51 -  1.42
  @@ -166,11 +166,10 @@
   }
   
   /* Actually APR's apr_strfsize */
  -static char *status_strfsize(size_t size, char *buf)
  +static char *status_strfsize(double size, char *buf)
   {
   const char ord[] = KMGTPE;
   const char *o = ord;
  -int remain;
   
   if (size  0) {
   return strcpy(buf,   - );
  @@ -181,22 +180,12 @@
   return buf;
   }
   do {
  -remain = (int)(size  1023);
  -size = 10;
  +size /= 1024;
   if (size = 973) {
   ++o;
   continue;
   }
  -if (size  9 || (size == 9  remain  973)) {
  -if ((remain = ((remain * 5) + 256) / 512) = 10)
  -++size, remain = 0;
  -if (sprintf(buf, %d.%d%c, (int) size, remain, *o)  0)
  -return strcpy(buf, );
  -return buf;
  -}
  -if (remain = 512)
  -++size;
  -if (sprintf(buf, %3d%c, (int) size, *o)  0)
  +if (sprintf(buf, %.2f%c, size, *o)  0)
   return strcpy(buf, );
   return buf;
   } while (1);
  
  
  

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



Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.h jk_status.c

2005-06-13 Thread Tom Anderson

Mladen,

I appreciate you addressing this issue.   But isn't this fix just  
delaying the problem?   An IEEE double has 52 bits of mantissa versus  
32 bits for size_t.   So the problem will now occur at 4 PB  
(petabytes).   Sure, that's a lot of bytes and my webservers would  
never see this kind of load.   But there might be some sites serving  
lots of large files that could have a problem with this ... maybe ...  
sometime.


So, perhaps it's something that can be overlooked for now.   But  
maybe you should consider doing it like the Request method.   In that  
method it adds the lbfactor from each worker's value and subtracts  
the total from the worker that is used.   For the Traffic method I  
imaging adding and adding/subtracting the lbfactor*bytes_read (or  
lbfactor*bytes_transferred) might accomplish the same thing.


~Tom

On Jun 13, 2005, at 1:55 AM, [EMAIL PROTECTED] wrote:


mturk   2005/06/13 00:55:51

  Modified:jk/native/common jk_lb_worker.c jk_shm.h jk_status.c
  Log:
  Use double instead size_t for trensferred/read, so that lb doesn't
  break on trnasferred mode when 2G of data has been send/read.

  Revision  ChangesPath
  1.90  +5 -5  jakarta-tomcat-connectors/jk/native/common/ 
jk_lb_worker.c


  Index: jk_lb_worker.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/ 
jk_lb_worker.c,v

  retrieving revision 1.89
  retrieving revision 1.90
  diff -u -r1.89 -r1.90
  --- jk_lb_worker.c15 May 2005 16:33:47 -1.89
  +++ jk_lb_worker.c13 Jun 2005 07:55:51 -1.90
  @@ -225,8 +225,8 @@
   {
   unsigned int i;
   int total_factor = 0;
  -size_t mytraffic = 0;
  -size_t curmin = 0;
  +double mytraffic = 0;
  +double curmin = 0;

   worker_record_t *candidate = NULL;
   if (p-lblock == JK_LB_LOCK_PESSIMISTIC)
  @@ -313,8 +313,8 @@
jk_logger_t *l)
   {
   unsigned int i;
  -size_t mytraffic = 0;
  -size_t curmin = 0;
  +double mytraffic = 0;
  +double curmin = 0;
   worker_record_t *candidate = NULL;

   if (p-lblock == JK_LB_LOCK_PESSIMISTIC)



  1.21  +3 -3  jakarta-tomcat-connectors/jk/native/common/ 
jk_shm.h


  Index: jk_shm.h
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/ 
jk_shm.h,v

  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- jk_shm.h15 May 2005 11:23:50 -1.20
  +++ jk_shm.h13 Jun 2005 07:55:51 -1.21
  @@ -81,9 +81,9 @@
   /* Statistical data */
   volatile time_t  error_time;
   /* Number of bytes read from remote */
  -volatile size_t  readed;
  +volatile double  readed;
   /* Number of bytes transferred to remote */
  -volatile size_t  transferred;
  +volatile double  transferred;
   /* Number of times the worker was elected */
   volatile size_t  elected;
   /* Number of non 200 responses */



  1.42  +4 -15 jakarta-tomcat-connectors/jk/native/common/ 
jk_status.c


  Index: jk_status.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/ 
jk_status.c,v

  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- jk_status.c15 May 2005 15:22:05 -1.41
  +++ jk_status.c13 Jun 2005 07:55:51 -1.42
  @@ -166,11 +166,10 @@
   }

   /* Actually APR's apr_strfsize */
  -static char *status_strfsize(size_t size, char *buf)
  +static char *status_strfsize(double size, char *buf)
   {
   const char ord[] = KMGTPE;
   const char *o = ord;
  -int remain;

   if (size  0) {
   return strcpy(buf,   - );
  @@ -181,22 +180,12 @@
   return buf;
   }
   do {
  -remain = (int)(size  1023);
  -size = 10;
  +size /= 1024;
   if (size = 973) {
   ++o;
   continue;
   }
  -if (size  9 || (size == 9  remain  973)) {
  -if ((remain = ((remain * 5) + 256) / 512) = 10)
  -++size, remain = 0;
  -if (sprintf(buf, %d.%d%c, (int) size, remain, *o)  
 0)

  -return strcpy(buf, );
  -return buf;
  -}
  -if (remain = 512)
  -++size;
  -if (sprintf(buf, %3d%c, (int) size, *o)  0)
  +if (sprintf(buf, %.2f%c, size, *o)  0)
   return strcpy(buf, );
   return buf;
   } while (1);




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






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

Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.h jk_status.c

2005-06-13 Thread William A. Rowe, Jr.
Mladen; are you sure you weren't looking for 'long long', 
al la int64_t?  Falling over to the FPU is rarely the best
performance decision.

Bill

At 02:55 AM 6/13/2005, [EMAIL PROTECTED] wrote:
mturk   2005/06/13 00:55:51

  Modified:jk/native/common jk_lb_worker.c jk_shm.h jk_status.c
  Log:
  Use double instead size_t for trensferred/read, so that lb doesn't
  break on trnasferred mode when 2G of data has been send/read.
  
  -size_t mytraffic = 0;
  -size_t curmin = 0;
  +double mytraffic = 0;
  +double curmin = 0;



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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-05-15 Thread mturk
mturk   2005/05/15 05:45:50

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Log worker creation as error instead as debug message.
  
  Revision  ChangesPath
  1.85  +4 -5  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.84
  retrieving revision 1.85
  diff -u -r1.84 -r1.85
  --- jk_lb_worker.c15 May 2005 11:23:50 -  1.84
  +++ jk_lb_worker.c15 May 2005 12:45:50 -  1.85
  @@ -806,10 +806,9 @@
   
   if (i != num_of_workers) {
   close_workers(p, i, l);
  -if (JK_IS_DEBUG_LEVEL(l))
  -jk_log(l, JK_LOG_DEBUG,
  -   Failed to create worker %s,
  -   p-lb_workers[i].s-name);
  +jk_log(l, JK_LOG_ERROR,
  +   Failed creating worker %s,
  +   p-lb_workers[i].s-name);
   
   }
   else {
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-05-15 Thread mturk
mturk   2005/05/15 05:47:24

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Log error before closing workers.
  
  Revision  ChangesPath
  1.86  +2 -3  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.85
  retrieving revision 1.86
  diff -u -r1.85 -r1.86
  --- jk_lb_worker.c15 May 2005 12:45:50 -  1.85
  +++ jk_lb_worker.c15 May 2005 12:47:24 -  1.86
  @@ -805,11 +805,10 @@
   }
   
   if (i != num_of_workers) {
  -close_workers(p, i, l);
   jk_log(l, JK_LOG_ERROR,
  Failed creating worker %s,
  p-lb_workers[i].s-name);
  -
  +close_workers(p, i, l);
   }
   else {
   if (JK_IS_DEBUG_LEVEL(l)) {
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_worker.c jk_worker.h

2005-05-15 Thread mturk
mturk   2005/05/15 06:02:39

  Modified:jk/native/common jk_lb_worker.c jk_worker.c jk_worker.h
  Log:
  Add use_map so that load balancer members do not inherit
  mount directives if specified unless they are in worker.list.
  
  Revision  ChangesPath
  1.87  +2 -2  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.86
  retrieving revision 1.87
  diff -u -r1.86 -r1.87
  --- jk_lb_worker.c15 May 2005 12:47:24 -  1.86
  +++ jk_lb_worker.c15 May 2005 13:02:38 -  1.87
  @@ -790,7 +790,7 @@
   p-lb_workers[i].s-is_disabled = 
jk_get_is_worker_disabled(props, worker_names[i]);
   /* Worker can be initaly deactive as cold standby */
   p-lb_workers[i].s-is_stopped = 
jk_get_is_worker_stopped(props, worker_names[i]);
  -if (!wc_create_worker(p-lb_workers[i].s-name,
  +if (!wc_create_worker(p-lb_workers[i].s-name, 0,
 props,
 (p-lb_workers[i].w),
 we, l) || !p-lb_workers[i].w) {
  
  
  
  1.34  +5 -4  jakarta-tomcat-connectors/jk/native/common/jk_worker.c
  
  Index: jk_worker.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_worker.c,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- jk_worker.c   15 May 2005 11:10:11 -  1.33
  +++ jk_worker.c   15 May 2005 13:02:38 -  1.34
  @@ -111,7 +111,7 @@
   return rc;
   }
   
  -int wc_create_worker(const char *name,
  +int wc_create_worker(const char *name, int use_map,
jk_map_t *init_data,
jk_worker_t **rc, jk_worker_env_t *we, jk_logger_t *l)
   {
  @@ -165,7 +165,8 @@
   JK_TRACE_EXIT(l);
   return JK_FALSE;
   }
  -if (jk_get_worker_mount_list(init_data, name,
  +if (use_map 
  +jk_get_worker_mount_list(init_data, name,
map_names,
num_of_maps)  num_of_maps) {
   for (i = 0; i  num_of_maps; i++) {
  @@ -232,7 +233,7 @@
   jk_log(l, JK_LOG_DEBUG,
  creating worker %s, worker_list[i]);
   
  -if (wc_create_worker(worker_list[i], init_data, w, we, l)) {
  +if (wc_create_worker(worker_list[i], 1, init_data, w, we, l)) {
   jk_worker_t *oldw = NULL;
   if (!jk_map_put(worker_map, worker_list[i], w, (void *)oldw)) {
   w-destroy(w, l);
  
  
  
  1.13  +2 -2  jakarta-tomcat-connectors/jk/native/common/jk_worker.h
  
  Index: jk_worker.h
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_worker.h,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- jk_worker.h   24 Apr 2005 09:54:47 -  1.12
  +++ jk_worker.h   15 May 2005 13:02:38 -  1.13
  @@ -39,7 +39,7 @@
   
   jk_worker_t *wc_get_worker_for_name(const char *name, jk_logger_t *l);
   
  -int wc_create_worker(const char *name,
  +int wc_create_worker(const char *name, int use_map,
jk_map_t *init_data,
jk_worker_t **rc,
jk_worker_env_t *we, jk_logger_t *l);
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_lb_worker.h jk_status.c jk_util.c jk_util.h

2005-05-15 Thread mturk
mturk   2005/05/15 08:22:06

  Modified:jk/native/common jk_lb_worker.c jk_lb_worker.h jk_status.c
jk_util.c jk_util.h
  Log:
  Added lock directive for load balancer that allows more acurate
  load balancing in case of burst load. Also display both method and
  lock type in load balancer.
  
  Revision  ChangesPath
  1.88  +20 -2 jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.87
  retrieving revision 1.88
  diff -u -r1.87 -r1.88
  --- jk_lb_worker.c15 May 2005 13:02:38 -  1.87
  +++ jk_lb_worker.c15 May 2005 15:22:05 -  1.88
  @@ -229,7 +229,8 @@
   size_t curmin = 0;
   
   worker_record_t *candidate = NULL;
  -
  +if (p-lblock == JK_LB_LOCK_PESSIMISTIC)
  +jk_shm_lock();
   /* First try to see if we have available candidate */
   for (i = 0; i  p-num_of_workers; i++) {
   /* Skip all workers that are not member of domain */
  @@ -262,6 +263,8 @@
   candidate-s-lb_value -= total_factor;
   candidate-r = (candidate-s-domain[0]);
   }
  +if (p-lblock == JK_LB_LOCK_PESSIMISTIC)
  +jk_shm_unlock();
   
   return candidate;
   }
  @@ -274,6 +277,8 @@
   int total_factor = 0;
   worker_record_t *candidate = NULL;
   
  +if (p-lblock == JK_LB_LOCK_PESSIMISTIC)
  +jk_shm_lock();
   /* First try to see if we have available candidate */
   for (i = 0; i  p-num_of_workers; i++) {
   /* If the worker is in error state run
  @@ -298,6 +303,9 @@
   
   if (candidate)
   candidate-s-lb_value -= total_factor;
  +if (p-lblock == JK_LB_LOCK_PESSIMISTIC)
  +jk_shm_unlock();
  +
   return candidate;
   }
   
  @@ -309,6 +317,8 @@
   size_t curmin = 0;
   worker_record_t *candidate = NULL;
   
  +if (p-lblock == JK_LB_LOCK_PESSIMISTIC)
  +jk_shm_lock();
   /* First try to see if we have available candidate */
   for (i = 0; i  p-num_of_workers; i++) {
   /* If the worker is in error state run
  @@ -332,6 +342,8 @@
   }
   }
   }
  +if (p-lblock == JK_LB_LOCK_PESSIMISTIC)
  +jk_shm_unlock();
   return candidate;
   }
   
  @@ -374,6 +386,9 @@
   }
   if (candidate  !uses_domain 
   p-lbmethod == JK_LB_BYREQUESTS) {
  +if (p-lblock == JK_LB_LOCK_PESSIMISTIC)
  +jk_shm_lock();
  +
   for (i = 0; i  p-num_of_workers; i++) {
   if (JK_WORKER_USABLE(p-lb_workers[i].s)) {
   /* Skip all workers that are not member of candidate domain 
*/
  @@ -385,6 +400,8 @@
   }
   }
   candidate-s-lb_value -= total_factor;
  +if (p-lblock == JK_LB_LOCK_PESSIMISTIC)
  +jk_shm_unlock();
   }
   return candidate;
   }
  @@ -848,6 +865,7 @@
   p-s-recover_wait_time = WAIT_BEFORE_RECOVER;
   
   p-lbmethod = jk_get_lb_method(props, p-s-name);
  +p-lblock   = jk_get_lb_lock(props, p-s-name);
   
   JK_INIT_CS((p-cs), i);
   if (i == JK_FALSE) {
  
  
  
  1.15  +9 -3  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.h
  
  Index: jk_lb_worker.h
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.h,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- jk_lb_worker.h22 Feb 2005 08:42:45 -  1.14
  +++ jk_lb_worker.h15 May 2005 15:22:05 -  1.15
  @@ -39,8 +39,13 @@
   
   #define JK_LB_BYREQUESTS  (0)
   #define JK_LB_BYTRAFFIC   (1)
  -#define JK_LB_METHOD_REQUESTS (request)
  -#define JK_LB_METHODTRAFFIC   (traffic)
  +#define JK_LB_METHOD_REQUESTS (Request)
  +#define JK_LB_METHOD_TRAFFIC  (Traffic)
  +#define JK_LB_LOCK_DEFAULT (0)
  +#define JK_LB_LOCK_PESSIMISTIC (1)
  +#define JK_LB_LM_DEFAULT   (Optimistic)
  +#define JK_LB_LM_PESSIMISTIC   (Pessimistic)
  +
   #define WAIT_BEFORE_RECOVER   (60)
   
   struct worker_record
  @@ -58,6 +63,7 @@
   worker_record_t *lb_workers;
   unsigned int num_of_workers;
   int  lbmethod;
  +int  lblock;
   
   jk_pool_t p;
   jk_pool_atom_t buf[TINY_POOL_SIZE];
  
  
  
  1.41  +5 -1  jakarta-tomcat-connectors/jk/native/common/jk_status.c
  
  Index: jk_status.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_status.c,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- jk_status.c   15 May 2005 11:27:06 -  1.40
  +++ jk_status.c   15 May 2005 15:22:05 -  1.41
  @@ -436,6 +436,8 @@

cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-05-15 Thread mturk
mturk   2005/05/15 09:33:47

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Do not log return value from endpoint. No functional change.
  
  Revision  ChangesPath
  1.89  +3 -3  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.88
  retrieving revision 1.89
  diff -u -r1.88 -r1.89
  --- jk_lb_worker.c15 May 2005 15:22:05 -  1.88
  +++ jk_lb_worker.c15 May 2005 16:33:47 -  1.89
  @@ -585,8 +585,8 @@
   
   if (JK_IS_DEBUG_LEVEL(l))
   jk_log(l, JK_LOG_DEBUG,
  -   service worker=%s jvm_route=%s rc=%d,
  -   rec-s-name, s-jvm_route, rc);
  +   service worker=%s jvm_route=%s,
  +   rec-s-name, s-jvm_route);
   rec-s-elected++;
   if (rc  end) {
   /* Reset endpoint read and write sizes for
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-05-10 Thread mturk
mturk   2005/05/10 02:23:33

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Fix bug 34833 making failover to work.
  
  Revision  ChangesPath
  1.83  +2 -2  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.82
  retrieving revision 1.83
  diff -u -r1.82 -r1.83
  --- jk_lb_worker.c5 May 2005 19:48:03 -   1.82
  +++ jk_lb_worker.c10 May 2005 09:23:33 -  1.83
  @@ -625,7 +625,7 @@
   rec-s-in_recovering = JK_FALSE;
   rec-s-error_time = time(NULL);
   
  -if (is_service_error  JK_HTTP_OK) {
  +if (is_service_error != JK_HTTP_SERVER_BUSY) {
   /*
   * Error is not recoverable - break with an error.
   */
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-05-05 Thread mturk
mturk   2005/05/05 05:48:35

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Allow setting 'secret' inside load balancer worker that will
  set the secret for all its members if the membes have no specified
  secret property.
  
  Revision  ChangesPath
  1.80  +11 -1 jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.79
  retrieving revision 1.80
  diff -u -r1.79 -r1.80
  --- jk_lb_worker.c26 Apr 2005 15:28:18 -  1.79
  +++ jk_lb_worker.c5 May 2005 12:48:35 -   1.80
  @@ -29,6 +29,8 @@
   #include jk_worker.h
   #include jk_lb_worker.h
   #include jk_ajp13.h
  +#include jk_ajp13_worker.h
  +#include jk_ajp14_worker.h
   #include jk_mt.h
   #include jk_shm.h
   
  @@ -732,9 +734,11 @@
   lb_worker_t *p = pThis-worker_private;
   char **worker_names;
   unsigned int num_of_workers;
  +const char *secret;
   
   p-s-sticky_session = jk_get_is_sticky_session(props, p-s-name);
   p-s-sticky_session_force = jk_get_is_sticky_session_force(props, 
p-s-name);
  +secret = jk_get_worker_secret(props, p-s-name);
   
   if (jk_get_lb_worker_list(props,
 p-s-name,
  @@ -788,6 +792,12 @@
 we, l) || !p-lb_workers[i].w) {
   break;
   }
  +if (secret  (p-lb_workers[i].w-type == 
JK_AJP13_WORKER_TYPE ||
  +p-lb_workers[i].w-type == JK_AJP14_WORKER_TYPE)) {
  +ajp_worker_t *aw = (ajp_worker_t 
*)p-lb_workers[i].w-worker_private; 
  +if (!aw-secret)
  +aw-secret = secret;
  +}
   }
   
   if (i != num_of_workers) {
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-05-05 Thread pero
pero2005/05/05 08:40:17

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Don't use work when is stopped!
  
  Revision  ChangesPath
  1.81  +2 -2  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.80
  retrieving revision 1.81
  diff -u -r1.80 -r1.81
  --- jk_lb_worker.c5 May 2005 12:48:35 -   1.80
  +++ jk_lb_worker.c5 May 2005 15:40:17 -   1.81
  @@ -368,7 +368,7 @@
   uses_domain = 1;
   candidate = find_best_bydomain(p, candidate-s-domain, l);
   }
  -if (candidate  candidate-s-in_error_state)
  +if (candidate  (candidate-s-in_error_state || 
candidate-s-is_stopped))
   candidate = NULL;
   }
   }
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-05-05 Thread pero
pero2005/05/05 12:48:03

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Fix the sepcial only one worker case with stopped flag.
  When disabled is true also new session can be created!!
  
  Revision  ChangesPath
  1.82  +2 -2  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.81
  retrieving revision 1.82
  diff -u -r1.81 -r1.82
  --- jk_lb_worker.c5 May 2005 15:40:17 -   1.81
  +++ jk_lb_worker.c5 May 2005 19:48:03 -   1.82
  @@ -442,7 +442,7 @@
   retry_worker(p-lb_workers[0], p-s-recover_wait_time, l);
   }
   /* Check if worker is marked for retry */
  -if (!p-lb_workers[0].s-in_error_state) {
  +if(!p-lb_workers[0].s-in_error_state  
!p-lb_workers[0].s-is_stopped) {
   p-lb_workers[0].r = (p-lb_workers[0].s-name[0]);
   JK_TRACE_EXIT(l);
   return p-lb_workers[0];
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.h jk_status.c jk_uri_worker_map.h jk_util.c jk_util.h

2005-04-26 Thread pero
pero2005/04/26 08:28:18

  Modified:jk/native/common jk_lb_worker.c jk_shm.h jk_status.c
jk_uri_worker_map.h jk_util.c jk_util.h
  Log:
  Add stopped flag for better cluster support to worker.
  Many thanks to Mladen :-
  
  Revision  ChangesPath
  1.79  +11 -9 jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.78
  retrieving revision 1.79
  diff -u -r1.78 -r1.79
  --- jk_lb_worker.c24 Apr 2005 09:54:47 -  1.78
  +++ jk_lb_worker.c26 Apr 2005 15:28:18 -  1.79
  @@ -40,8 +40,8 @@
   /*
* Time to wait before retry...
*/
  -#define JK_WORKER_IN_ERROR(w) ((w)-in_error_state  !(w)-is_disabled  
!(w)-is_busy)
  -#define JK_WORKER_USABLE(w)   (!(w)-in_error_state  !(w)-is_disabled  
!(w)-is_busy)
  +#define JK_WORKER_IN_ERROR(w) ((w)-in_error_state   !(w)-is_disabled  
!(w)-is_busy)
  +#define JK_WORKER_USABLE(w)   (!(w)-in_error_state  !(w)-is_stopped  
!(w)-is_disabled  !(w)-is_busy)
   
   struct lb_endpoint
   {
  @@ -235,7 +235,7 @@
   strcmp(p-lb_workers[i].s-domain, domain))
   continue;
   /* Take into calculation only the workers that are
  - * not in error state or not disabled.
  + * not in error state, stopped or not disabled.
*/
   if (JK_WORKER_USABLE(p-lb_workers[i].s)) {
   if (p-lbmethod == JK_LB_BYREQUESTS) {
  @@ -252,7 +252,7 @@
   curmin = mytraffic;
   }
   }
  -}
  +}
   }
   
   if (candidate) {
  @@ -284,7 +284,7 @@
   retry_worker(p-lb_workers[i], p-s-recover_wait_time, l);
   }
   /* Take into calculation only the workers that are
  - * not in error state or not disabled.
  + * not in error state, stopped or not disabled.
*/
   if (JK_WORKER_USABLE(p-lb_workers[i].s)) {
   p-lb_workers[i].s-lb_value += p-lb_workers[i].s-lb_factor;
  @@ -319,7 +319,7 @@
   retry_worker(p-lb_workers[i], p-s-recover_wait_time, l);
   }
   /* Take into calculation only the workers that are
  - * not in error state or not disabled.
  + * not in error state, stopped or not disabled.
*/
   if (JK_WORKER_USABLE(p-lb_workers[i].s)) {
   mytraffic = 
(p-lb_workers[i].s-transferred/p-lb_workers[i].s-lb_factor) +
  @@ -351,8 +351,8 @@
   if (JK_WORKER_IN_ERROR(candidate-s)) {
   retry_worker(candidate, p-s-recover_wait_time, l);
   }
  -if (candidate-s-in_error_state) {
  -/* We have a worker that is error state.
  +if (candidate-s-in_error_state || candidate-s-is_stopped ) {
  +/* We have a worker that is error state or stopped.
* If it has a redirection set use that redirection worker.
* This enables to safely remove the member from the
* balancer. Of course you will need a some kind of
  @@ -780,6 +780,8 @@
   p-lb_workers[i].s-error_time = 0;
   /* Worker can be initaly disabled as hot standby */
   p-lb_workers[i].s-is_disabled = 
jk_get_is_worker_disabled(props, worker_names[i]);
  +/* Worker can be initaly deactive as cold standby */
  +p-lb_workers[i].s-is_stopped = 
jk_get_is_worker_stopped(props, worker_names[i]);
   if (!wc_create_worker(p-lb_workers[i].s-name,
 props,
 (p-lb_workers[i].w),
  
  
  
  1.19  +2 -1  jakarta-tomcat-connectors/jk/native/common/jk_shm.h
  
  Index: jk_shm.h
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_shm.h,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- jk_shm.h  11 Apr 2005 06:36:02 -  1.18
  +++ jk_shm.h  26 Apr 2005 15:28:18 -  1.19
  @@ -64,6 +64,7 @@
   charredirect[JK_SHM_STR_SIZ+1];
   /* current status of the worker */
   volatile int is_disabled;
  +volatile int is_stopped;
   volatile int is_busy;
   /* Current lb factor */
   volatile int lb_factor;
  
  
  
  1.38  +17 -6 jakarta-tomcat-connectors/jk/native/common/jk_status.c
  
  Index: jk_status.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_status.c,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- jk_status.c   13 Apr 2005 11:03:37 -  1.37
  +++ jk_status.c   26 Apr 2005 15:28:18 -  1.38
 

cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-04-13 Thread mturk
mturk   2005/04/13 05:40:03

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Add difftime instead simply calculating time.
  
  Revision  ChangesPath
  1.76  +2 -2  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.75
  retrieving revision 1.76
  diff -u -r1.75 -r1.76
  --- jk_lb_worker.c9 Apr 2005 15:29:14 -   1.75
  +++ jk_lb_worker.c13 Apr 2005 12:40:03 -  1.76
  @@ -165,7 +165,7 @@
int recover_wait_time,
jk_logger_t *l)
   {
  -int elapsed = (int)(time(0) - w-s-error_time);
  +int elapsed = (int)difftime(time(NULL), w-s-error_time);
   JK_TRACE_ENTER(l);
   
   if (elapsed = recover_wait_time) {
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-04-09 Thread glenn
glenn   2005/04/09 08:29:14

  Modified:jk/native/common jk_lb_worker.c
  Log:
  BUG: 34358 loadbalance.method=[T]raffic not enbaled
  
  The lbworker-lbmethod was not being intialized from the
  worker.properties config.
  
  Fixed bug based on mladen's recommendation.
  
  Revision  ChangesPath
  1.75  +3 -1  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.74
  retrieving revision 1.75
  diff -u -r1.74 -r1.75
  --- jk_lb_worker.c26 Mar 2005 09:28:56 -  1.74
  +++ jk_lb_worker.c9 Apr 2005 15:29:14 -   1.75
  @@ -821,6 +821,8 @@
   if (p-s-recover_wait_time  WAIT_BEFORE_RECOVER)
   p-s-recover_wait_time = WAIT_BEFORE_RECOVER;
   
  +p-lbmethod = jk_get_lb_method(props, p-s-name);
  +
   JK_INIT_CS((p-cs), i);
   if (i == JK_FALSE) {
   jk_log(log, JK_LOG_ERROR,
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-03-26 Thread mturk
mturk   2005/03/26 00:44:11

  Modified:jk/native/common jk_lb_worker.c
  Log:
  In case ajp13 worker returns client error do not mark the worker
  in error state. This operation is not recoverable, so return BAD_REQUEST
  to web server.
  
  Revision  ChangesPath
  1.73  +50 -24jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.72
  retrieving revision 1.73
  diff -u -r1.72 -r1.73
  --- jk_lb_worker.c26 Feb 2005 07:16:54 -  1.72
  +++ jk_lb_worker.c26 Mar 2005 08:44:11 -  1.73
  @@ -28,15 +28,16 @@
   #include jk_util.h
   #include jk_worker.h
   #include jk_lb_worker.h
  +#include jk_ajp13.h
   #include jk_mt.h
   #include jk_shm.h
   
   /*
  - * The load balancing code in this 
  + * The load balancing code in this
*/
   
   
  -/* 
  +/*
* Time to wait before retry...
*/
   #define JK_WORKER_IN_ERROR(w) ((w)-in_error_state  !(w)-is_disabled  
!(w)-is_busy)
  @@ -66,9 +67,9 @@
   if (strlen(id_start)) {
   char *id_end;
   id_start = jk_pool_strdup(s-pool, id_start);
  -/* 
  +/*
* The query string is not part of req_uri, however
  - * to be on the safe side lets remove the trailing query 
  + * to be on the safe side lets remove the trailing query
* string if appended...
*/
   if ((id_end = strchr(id_start, '?')) != NULL) {
  @@ -186,14 +187,14 @@
   JK_TRACE_EXIT(l);
   }
   
  -static worker_record_t *find_by_session(lb_worker_t *p, 
  +static worker_record_t *find_by_session(lb_worker_t *p,
   const char *name,
   jk_logger_t *l)
   {
   
   worker_record_t *rc = NULL;
   unsigned int i;
  -
  +
   for (i = 0; i  p-num_of_workers; i++) {
   if (strcmp(p-lb_workers[i].s-name, name) == 0) {
   rc = p-lb_workers[i];
  @@ -214,7 +215,7 @@
   size_t curmin = 0;
   
   worker_record_t *candidate = NULL;
  -
  +
   /* First try to see if we have available candidate */
   for (i = 0; i  p-num_of_workers; i++) {
   /* Skip all workers that are not member of domain */
  @@ -258,7 +259,7 @@
   unsigned int i;
   int total_factor = 0;
   worker_record_t *candidate = NULL;
  -
  +
   /* First try to see if we have available candidate */
   for (i = 0; i  p-num_of_workers; i++) {
   /* If the worker is in error state run
  @@ -286,14 +287,14 @@
   return candidate;
   }
   
  -static worker_record_t *find_best_bytraffic(lb_worker_t *p, 
  +static worker_record_t *find_best_bytraffic(lb_worker_t *p,
jk_logger_t *l)
   {
   unsigned int i;
   size_t mytraffic = 0;
   size_t curmin = 0;
   worker_record_t *candidate = NULL;
  -
  +
   /* First try to see if we have available candidate */
   for (i = 0; i  p-num_of_workers; i++) {
   /* If the worker is in error state run
  @@ -316,11 +317,11 @@
   curmin = mytraffic;
   }
   }
  -}
  +}
   return candidate;
   }
   
  -static worker_record_t *find_bysession_route(lb_worker_t *p, 
  +static worker_record_t *find_bysession_route(lb_worker_t *p,
const char *name,
jk_logger_t *l)
   {
  @@ -379,7 +380,7 @@
   {
   worker_record_t *rc = NULL;
   unsigned int i;
  -const char *redirect = NULL;
  +const char *redirect = NULL;
   
   for (i = 0; i  p-num_of_workers; i++) {
   if (strlen(p-lb_workers[i].s-redirect)) {
  @@ -522,6 +523,7 @@
   lb_endpoint_t *p = e-endpoint_private;
   int attempt = 0;
   int num_of_workers = p-worker-num_of_workers;
  +worker_record_t *prec = NULL;
   /* Set returned error to OK */
   *is_error = JK_HTTP_OK;
   
  @@ -539,12 +541,14 @@
   worker_record_t *rec =
   get_most_suitable_worker(p-worker, s, attempt++, l);
   int rc;
  -
  -if (rec) {
  +/* Do not reuse previous worker, because
  + * that worker already failed.
  + */
  +if (rec  rec != prec) {
   int is_service_error = JK_HTTP_OK;
  -int service_ok = JK_FALSE;
  +int service_stat = JK_FALSE;
   jk_endpoint_t *end = NULL;
  -
  +
   s-jvm_route = rec-r;
   rc = rec-w-get_endpoint(rec-w, end, l);
   
  @@ -561,7 +565,7 @@
   

cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-02-25 Thread mturk
mturk   2005/02/25 23:16:54

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Add failover for hot standby. This allows new sessions to use failover
  worker or worker group. Limit is that you can not have two different
  failover workers or workers groups.
  
  Revision  ChangesPath
  1.72  +37 -23jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.71
  retrieving revision 1.72
  diff -u -r1.71 -r1.72
  --- jk_lb_worker.c22 Feb 2005 08:59:57 -  1.71
  +++ jk_lb_worker.c26 Feb 2005 07:16:54 -  1.72
  @@ -281,11 +281,8 @@
   }
   }
   
  -if (candidate) {
  +if (candidate)
   candidate-s-lb_value -= total_factor;
  -candidate-r = (candidate-s-name[0]);
  -}
  -
   return candidate;
   }
   
  @@ -320,27 +317,9 @@
   }
   }
   }
  -if (candidate)
  -candidate-r = (candidate-s-name[0]);
   return candidate;
   }
   
  -static worker_record_t *find_best_worker(lb_worker_t * p,
  - jk_logger_t *l)
  -{
  -worker_record_t *rc = NULL;
  -
  -if (p-lbmethod == JK_LB_BYREQUESTS)
  -rc = find_best_byrequests(p, l);
  -else if (p-lbmethod == JK_LB_BYTRAFFIC)
  -rc = find_best_bytraffic(p, l);
  -/* By default use worker name as session route */
  -if (rc)
  -rc-r = (rc-s-name[0]);
  -
  -return rc;
  -}
  -
   static worker_record_t *find_bysession_route(lb_worker_t *p, 
const char *name,
jk_logger_t *l)
  @@ -395,6 +374,41 @@
   return candidate;
   }
   
  +static worker_record_t *find_failover_worker(lb_worker_t * p,
  + jk_logger_t *l)
  +{
  +worker_record_t *rc = NULL;
  +unsigned int i;
  +const char *redirect = NULL;
  +
  +for (i = 0; i  p-num_of_workers; i++) {
  +if (strlen(p-lb_workers[i].s-redirect)) {
  +redirect = (p-lb_workers[i].s-redirect[0]);
  +break;
  +}
  +}
  +if (redirect)
  +rc = find_bysession_route(p, redirect, l);
  +return rc;
  +}
  +
  +static worker_record_t *find_best_worker(lb_worker_t * p,
  + jk_logger_t *l)
  +{
  +worker_record_t *rc = NULL;
  +
  +if (p-lbmethod == JK_LB_BYREQUESTS)
  +rc = find_best_byrequests(p, l);
  +else if (p-lbmethod == JK_LB_BYTRAFFIC)
  +rc = find_best_bytraffic(p, l);
  +/* By default use worker name as session route */
  +if (rc)
  +rc-r = (rc-s-name[0]);
  +else
  +rc = find_failover_worker(p, l);
  +return rc;
  +}
  +
   static worker_record_t *get_most_suitable_worker(lb_worker_t * p,
jk_ws_service_t *s,
int attempt,
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-02-22 Thread mturk
mturk   2005/02/22 00:25:29

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Set found worker to NULL when iterating over multiple session id's.
  
  Revision  ChangesPath
  1.68  +2 -1  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.67
  retrieving revision 1.68
  diff -u -r1.67 -r1.68
  --- jk_lb_worker.c22 Feb 2005 07:26:55 -  1.67
  +++ jk_lb_worker.c22 Feb 2005 08:25:29 -  1.68
  @@ -482,6 +482,7 @@
   }
   /* Try next partial sessionid if present */
   sessionid = next;
  +rc = NULL;
   }
   if (!rc  p-s-sticky_session_force) {
  JK_LEAVE_CS((p-cs), r);
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-02-22 Thread mturk
mturk   2005/02/22 00:30:46

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Remove unused code. No functional change.
  
  Revision  ChangesPath
  1.69  +1 -6  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.68
  retrieving revision 1.69
  diff -u -r1.68 -r1.69
  --- jk_lb_worker.c22 Feb 2005 08:25:29 -  1.68
  +++ jk_lb_worker.c22 Feb 2005 08:30:46 -  1.69
  @@ -537,12 +537,7 @@
   int service_ok = JK_FALSE;
   jk_endpoint_t *end = NULL;
   
  -/* XXX: No need to strdup here ? */
  -#if 0
  -s-jvm_route = jk_pool_strdup(s-pool, rec-r);
  -#else
   s-jvm_route = rec-r;
  -#endif
   rc = rec-w-get_endpoint(rec-w, end, l);
   
   if (JK_IS_DEBUG_LEVEL(l))
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_lb_worker.h jk_util.c jk_util.h

2005-02-22 Thread mturk
mturk   2005/02/22 00:42:45

  Modified:jk/native/common jk_lb_worker.c jk_lb_worker.h jk_util.c
jk_util.h
  Log:
  Move recover_time to jk_util.c to be consistent with how other
  properties are handled. No functional change.
  
  Revision  ChangesPath
  1.70  +3 -8  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.69
  retrieving revision 1.70
  diff -u -r1.69 -r1.70
  --- jk_lb_worker.c22 Feb 2005 08:30:46 -  1.69
  +++ jk_lb_worker.c22 Feb 2005 08:42:45 -  1.70
  @@ -39,9 +39,6 @@
   /* 
* Time to wait before retry...
*/
  -#define WAIT_BEFORE_RECOVER (60*1)
  -#define WORKER_RECOVER_TIME (recover_time)
  -
   #define JK_WORKER_IN_ERROR(w) ((w)-in_error_state  !(w)-is_disabled  
!(w)-is_busy)
   #define JK_WORKER_USABLE(w)   (!(w)-in_error_state  !(w)-is_disabled  
!(w)-is_busy)
   
  @@ -783,10 +780,8 @@
   pThis-retries = jk_get_worker_retries(props, p-s-name,
  JK_RETRIES);
   p-s-retries = pThis-retries;
  -if (jk_get_worker_int_prop(props, p-s-name,
  -   WORKER_RECOVER_TIME,
  -   i))
  -p-s-recover_wait_time = i;
  +p-s-recover_wait_time = jk_get_worker_recover_timeout(props, 
p-s-name,
  +
WAIT_BEFORE_RECOVER);
   if (p-s-recover_wait_time  WAIT_BEFORE_RECOVER)
   p-s-recover_wait_time = WAIT_BEFORE_RECOVER;
   
  
  
  
  1.14  +2 -1  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.h
  
  Index: jk_lb_worker.h
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.h,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- jk_lb_worker.h17 Feb 2005 07:16:32 -  1.13
  +++ jk_lb_worker.h22 Feb 2005 08:42:45 -  1.14
  @@ -41,6 +41,7 @@
   #define JK_LB_BYTRAFFIC   (1)
   #define JK_LB_METHOD_REQUESTS (request)
   #define JK_LB_METHODTRAFFIC   (traffic)
  +#define WAIT_BEFORE_RECOVER   (60)
   
   struct worker_record
   {
  
  
  
  1.61  +17 -1 jakarta-tomcat-connectors/jk/native/common/jk_util.c
  
  Index: jk_util.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_util.c,v
  retrieving revision 1.60
  retrieving revision 1.61
  diff -u -r1.60 -r1.61
  --- jk_util.c 17 Feb 2005 07:07:50 -  1.60
  +++ jk_util.c 22 Feb 2005 08:42:45 -  1.61
  @@ -67,6 +67,8 @@
   #define MOUNT_OF_WORKER (mount)
   #define METHOD_OF_WORKER(method)
   #define IS_WORKER_DISABLED  (disabled)
  +#define WORKER_RECOVER_TIME (recover_time)
  +
   
   #define DEFAULT_WORKER_TYPE JK_AJP13_WORKER_NAME
   #define SECRET_KEY_OF_WORKER(secretkey)
  @@ -496,6 +498,20 @@
   return jk_map_get_int(m, buf, def);
   }
   
  +int jk_get_worker_recover_timeout(jk_map_t *m, const char *wname, int def)
  +{
  +char buf[1024];
  +
  +if (!m || !wname) {
  +return -1;
  +}
  +
  +sprintf(buf, %s.%s.%s, PREFIX_OF_WORKER, wname,
  +WORKER_RECOVER_TIME);
  +
  +return jk_map_get_int(m, buf, def);
  +}
  +
   int jk_get_worker_socket_buffer(jk_map_t *m, const char *wname, int def)
   {
   char buf[1024];
  
  
  
  1.30  +3 -1  jakarta-tomcat-connectors/jk/native/common/jk_util.h
  
  Index: jk_util.h
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_util.h,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- jk_util.h 19 Feb 2005 10:54:49 -  1.29
  +++ jk_util.h 22 Feb 2005 08:42:45 -  1.30
  @@ -72,6 +72,8 @@
   
   int jk_get_worker_recycle_timeout(jk_map_t *m, const char *wname, int def);
   
  +int jk_get_worker_recover_timeout(jk_map_t *m, const char *wname, int def);
  +
   const char *jk_get_worker_domain(jk_map_t *m, const char *wname, const char 
*def);
   
   const char *jk_get_worker_redirect(jk_map_t *m, const char *wname, const 
char *def);
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-02-22 Thread mturk
mturk   2005/02/22 00:59:57

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Update code style to be consistent. No functional change.
  
  Revision  ChangesPath
  1.71  +3 -6  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.70
  retrieving revision 1.71
  diff -u -r1.70 -r1.71
  --- jk_lb_worker.c22 Feb 2005 08:42:45 -  1.70
  +++ jk_lb_worker.c22 Feb 2005 08:59:57 -  1.71
  @@ -52,14 +52,13 @@
   typedef struct lb_endpoint lb_endpoint_t;
   
   
  -/* = 
*/
   /* Retrieve the parameter with the given name
*/
   static char *get_path_param(jk_ws_service_t *s, const char *name)
   {
   char *id_start = NULL;
   for (id_start = strstr(s-req_uri, name);
id_start; id_start = strstr(id_start + 1, name)) {
  -if ('=' == id_start[strlen(name)]) {
  +if (id_start[strlen(name)] == '=') {
   /*
* Session path-cookie was found, get it's value
*/
  @@ -89,7 +88,6 @@
   return NULL;
   }
   
  -/* = 
*/
   /* Retrieve the cookie with the given name   
*/
   static char *get_cookie(jk_ws_service_t *s, const char *name)
   {
  @@ -97,7 +95,7 @@
   char *result = NULL;
   
   for (i = 0; i  s-num_headers; i++) {
  -if (0 == strcasecmp(s-headers_names[i], cookie)) {
  +if (strcasecmp(s-headers_names[i], cookie) == 0) {
   
   char *id_start;
   for (id_start = strstr(s-headers_values[i], name);
  @@ -142,7 +140,6 @@
   }
   
   
  -/* = 
*/
   /* Retrieve session id from the cookie or the parameter  
*/
   /* (parameter first) 
*/
   static char *get_sessionid(jk_ws_service_t *s)
  
  
  

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



Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_util.c jk_util.h

2005-02-22 Thread Rahul P Akolkar

Return Receipt
   
Your  Re: cvs commit: jakarta-tomcat-connectors/jk/native/common   
document  jk_lb_worker.c jk_util.c jk_util.h   
:  
   
was   Rahul P Akolkar/Watson/IBM   
received   
by:
   
at:   02/22/2005 12:11:03  
   





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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-02-21 Thread mturk
mturk   2005/02/21 08:14:13

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Fix missing service jvm_route settings.
  
  Revision  ChangesPath
  1.64  +5 -3  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.63
  retrieving revision 1.64
  diff -u -r1.63 -r1.64
  --- jk_lb_worker.c19 Feb 2005 08:12:29 -  1.63
  +++ jk_lb_worker.c21 Feb 2005 16:14:13 -  1.64
  @@ -203,6 +203,7 @@
   for (i = 0; i  p-num_of_workers; i++) {
   if (strcmp(p-lb_workers[i].s-name, name) == 0) {
   rc = p-lb_workers[i];
  +rc-r = (rc-s-name[0]);
   break;
   }
   }
  @@ -324,8 +325,9 @@
   curmin = mytraffic;
   }
   }
  -}
  -
  +}
  +if (candidate)
  +candidate-r = (candidate-s-name[0]);
   return candidate;
   }
   
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-02-21 Thread mturk
mturk   2005/02/21 09:02:50

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Update lb_values for session workers.
  
  Revision  ChangesPath
  1.65  +17 -1 jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.64
  retrieving revision 1.65
  diff -u -r1.64 -r1.65
  --- jk_lb_worker.c21 Feb 2005 16:14:13 -  1.64
  +++ jk_lb_worker.c21 Feb 2005 17:02:50 -  1.65
  @@ -204,6 +204,22 @@
   if (strcmp(p-lb_workers[i].s-name, name) == 0) {
   rc = p-lb_workers[i];
   rc-r = (rc-s-name[0]);
  +if (!JK_WORKER_IN_ERROR(rc-s) 
  +p-lbmethod == JK_LB_BYREQUESTS) {
  +unsigned int j;
  +int total_factor = 0;
  +for (j = 0; j  p-num_of_workers; j++) {
  +if (JK_WORKER_USABLE(p-lb_workers[i].s) 
  +strlen(rc-s-domain)  
  +(strlen(p-lb_workers[i].s-domain) == 0 ||
  + strcmp(p-lb_workers[i].s-domain, rc-s-domain)))
  +continue;
  +p-lb_workers[i].s-lb_value += 
p-lb_workers[i].s-lb_factor;
  +total_factor += p-lb_workers[i].s-lb_factor;
  +}
  +rc-s-lb_value -= total_factor;
  +}
  +
   break;
   }
   }
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-02-21 Thread mturk
mturk   2005/02/21 09:10:00

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Revert the latest patch. The factor is already calculated.
  What was missnig was the lbmethod check.
  
  Revision  ChangesPath
  1.66  +3 -18 jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.65
  retrieving revision 1.66
  diff -u -r1.65 -r1.66
  --- jk_lb_worker.c21 Feb 2005 17:02:50 -  1.65
  +++ jk_lb_worker.c21 Feb 2005 17:10:00 -  1.66
  @@ -204,22 +204,6 @@
   if (strcmp(p-lb_workers[i].s-name, name) == 0) {
   rc = p-lb_workers[i];
   rc-r = (rc-s-name[0]);
  -if (!JK_WORKER_IN_ERROR(rc-s) 
  -p-lbmethod == JK_LB_BYREQUESTS) {
  -unsigned int j;
  -int total_factor = 0;
  -for (j = 0; j  p-num_of_workers; j++) {
  -if (JK_WORKER_USABLE(p-lb_workers[i].s) 
  -strlen(rc-s-domain)  
  -(strlen(p-lb_workers[i].s-domain) == 0 ||
  - strcmp(p-lb_workers[i].s-domain, rc-s-domain)))
  -continue;
  -p-lb_workers[i].s-lb_value += 
p-lb_workers[i].s-lb_factor;
  -total_factor += p-lb_workers[i].s-lb_factor;
  -}
  -rc-s-lb_value -= total_factor;
  -}
  -
   break;
   }
   }
  @@ -398,7 +382,8 @@
   candidate = NULL;
   }
   }
  -if (candidate  !uses_domain) {
  +if (candidate  !uses_domain 
  +p-lbmethod == JK_LB_BYREQUESTS) {
   for (i = 0; i  p-num_of_workers; i++) {
   if (JK_WORKER_USABLE(p-lb_workers[i].s)) {
   /* Skip all workers that are not member of candidate domain 
*/
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-02-21 Thread mturk
mturk   2005/02/21 23:26:55

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Fix infinite loop when all workers are in error state and sticky_session_force
  is defined. If we found a worker by session id, and its in error state, return
  no worker if sticky_session_force is defined (forbiden failover)
  
  Revision  ChangesPath
  1.67  +4 -2  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.66
  retrieving revision 1.67
  diff -u -r1.66 -r1.67
  --- jk_lb_worker.c21 Feb 2005 17:10:00 -  1.66
  +++ jk_lb_worker.c22 Feb 2005 07:26:55 -  1.67
  @@ -372,7 +372,9 @@
* balancer. Of course you will need a some kind of
* session replication between those two remote.
*/
  -if (*candidate-s-redirect)
  +if (p-s-sticky_session_force)
  +candidate = NULL;
  +else if (*candidate-s-redirect)
   candidate = find_by_session(p, candidate-s-redirect, l);
   else if (*candidate-s-domain  !uses_domain) {
   uses_domain = 1;
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.h jk_status.c

2005-02-19 Thread mturk
mturk   2005/02/19 00:12:30

  Modified:jk/native/common jk_lb_worker.c jk_shm.h jk_status.c
  Log:
  Add worker is_busy runtime status flag. When we can not obtain a free
  endpoint, mark the worker as busy rather then in error, so that recovery
  is not needed.
  
  Revision  ChangesPath
  1.63  +44 -25jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.62
  retrieving revision 1.63
  diff -u -r1.62 -r1.63
  --- jk_lb_worker.c17 Feb 2005 13:48:47 -  1.62
  +++ jk_lb_worker.c19 Feb 2005 08:12:29 -  1.63
  @@ -42,6 +42,9 @@
   #define WAIT_BEFORE_RECOVER (60*1)
   #define WORKER_RECOVER_TIME (recover_time)
   
  +#define JK_WORKER_IN_ERROR(w) ((w)-in_error_state  !(w)-is_disabled  
!(w)-is_busy)
  +#define JK_WORKER_USABLE(w)   (!(w)-in_error_state  !(w)-is_disabled  
!(w)-is_busy)
  +
   struct lb_endpoint
   {
   jk_endpoint_t *e;
  @@ -183,6 +186,7 @@
   w-s-name);
   w-s-in_recovering  = JK_TRUE;
   w-s-in_error_state = JK_FALSE;
  +w-s-is_busy = JK_FALSE;
   }
   
   JK_TRACE_EXIT(l);
  @@ -225,8 +229,7 @@
   /* Take into calculation only the workers that are
* not in error state or not disabled.
*/
  -if (!p-lb_workers[i].s-in_error_state 
  -!p-lb_workers[i].s-is_disabled) {
  +if (JK_WORKER_USABLE(p-lb_workers[i].s)) {
   if (p-lbmethod == JK_LB_BYREQUESTS) {
   p-lb_workers[i].s-lb_value += 
p-lb_workers[i].s-lb_factor;
   total_factor += p-lb_workers[i].s-lb_factor;
  @@ -269,15 +272,13 @@
* The worker might still be unusable, but we try
* anyway.
*/
  -if (p-lb_workers[i].s-in_error_state 
  -!p-lb_workers[i].s-is_disabled) {
  +if (JK_WORKER_IN_ERROR(p-lb_workers[i].s)) {
   retry_worker(p-lb_workers[i], p-s-recover_wait_time, l);
   }
   /* Take into calculation only the workers that are
* not in error state or not disabled.
*/
  -if (!p-lb_workers[i].s-in_error_state 
  -!p-lb_workers[i].s-is_disabled) {
  +if (JK_WORKER_USABLE(p-lb_workers[i].s)) {
   p-lb_workers[i].s-lb_value += p-lb_workers[i].s-lb_factor;
   total_factor += p-lb_workers[i].s-lb_factor;
   if (!candidate || p-lb_workers[i].s-lb_value  
candidate-s-lb_value)
  @@ -309,15 +310,13 @@
* The worker might still be unusable, but we try
* anyway.
*/
  -if (p-lb_workers[i].s-in_error_state 
  -!p-lb_workers[i].s-is_disabled) {
  +if (JK_WORKER_IN_ERROR(p-lb_workers[i].s)) {
   retry_worker(p-lb_workers[i], p-s-recover_wait_time, l);
   }
   /* Take into calculation only the workers that are
* not in error state or not disabled.
*/
  -if (!p-lb_workers[i].s-in_error_state 
  -!p-lb_workers[i].s-is_disabled) {
  +if (JK_WORKER_USABLE(p-lb_workers[i].s)) {
   mytraffic = 
(p-lb_workers[i].s-transferred/p-lb_workers[i].s-lb_factor) +
   
(p-lb_workers[i].s-readed/p-lb_workers[i].s-lb_factor);
   if (!candidate || mytraffic  curmin) {
  @@ -346,9 +345,9 @@
   return rc;
   }
   
  -static worker_record_t *find_session_route(lb_worker_t *p, 
  -   const char *name,
  -   jk_logger_t *l)
  +static worker_record_t *find_bysession_route(lb_worker_t *p, 
  + const char *name,
  + jk_logger_t *l)
   {
   unsigned int i;
   int total_factor = 0;
  @@ -361,13 +360,12 @@
   candidate = find_best_bydomain(p, name, l);
   }
   if (candidate) {
  -if (candidate-s-in_error_state  !candidate-s-is_disabled) {
  +if (JK_WORKER_IN_ERROR(candidate-s)) {
   retry_worker(candidate, p-s-recover_wait_time, l);
   }
   if (candidate-s-in_error_state) {
  -/* We have a worker that is unusable.
  - * It can be in error or disabled, but in case
  - * it has a redirection set use that redirection worker.
  +/* We have a worker that is error state.
  + * If it has a redirection set use that redirection worker.
* This enables to safely remove the member from the
* balancer. Of course you will need a some kind of
* session replication between those two remote.
  @@ -384,8 +382,7 @@
   }
   if (candidate  !uses_domain) {
   for (i = 0; i 

Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_util.c jk_util.h

2005-02-18 Thread shubham
this message contains virus. don't send messages!
- Original Message -
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Wednesday, February 16, 2005 2:55 PM
Subject: cvs commit: jakarta-tomcat-connectors/jk/native/common
jk_lb_worker.c jk_util.c jk_util.h


 mturk   2005/02/16 01:25:35

   Modified:jk/native/common jk_lb_worker.c jk_util.c jk_util.h
   Log:
   Added disabled boolean directive to worker. This is used for
   hot-standby workers that can be later enabled using jkstatus console.

   Revision  ChangesPath
   1.53  +3 -1
jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c

   Index: jk_lb_worker.c
   ===
   RCS file:
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
   retrieving revision 1.52
   retrieving revision 1.53
   diff -u -r1.52 -r1.53
   --- jk_lb_worker.c 16 Feb 2005 08:30:58 - 1.52
   +++ jk_lb_worker.c 16 Feb 2005 09:25:35 - 1.53
   @@ -643,6 +643,8 @@
p-lb_workers[i].s-lb_value =
p-lb_workers[i].s-lb_factor;
p-lb_workers[i].s-in_error_state = JK_FALSE;
p-lb_workers[i].s-in_recovering = JK_FALSE;
   +/* Worker can be initaly disabled as hot standby */
   +p-lb_workers[i].s-is_disabled =
jk_get_is_worker_disabled(props, worker_names[i]);
if (!wc_create_worker(p-lb_workers[i].s-name,
  props,
  (p-lb_workers[i].w),



   1.57  +16 -1
jakarta-tomcat-connectors/jk/native/common/jk_util.c

   Index: jk_util.c
   ===
   RCS file:
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_util.c,v
   retrieving revision 1.56
   retrieving revision 1.57
   diff -u -r1.56 -r1.57
   --- jk_util.c 16 Feb 2005 08:23:56 - 1.56
   +++ jk_util.c 16 Feb 2005 09:25:35 - 1.57
   @@ -65,6 +65,7 @@
#define REDIRECT_OF_WORKER  (redirect)
#define MOUNT_OF_WORKER (mount)
#define METHOD_OF_WORKER(method)
   +#define IS_WORKER_DISABLED  (disabled)

#define DEFAULT_WORKER_TYPE JK_AJP13_WORKER_NAME
#define SECRET_KEY_OF_WORKER(secretkey)
   @@ -640,6 +641,20 @@
return JK_FALSE;
}

   +int jk_get_is_worker_disabled(jk_map_t *m, const char *wname)
   +{
   +int rc = JK_TRUE;
   +char buf[1024];
   +if (m  wname) {
   +int value;
   +sprintf(buf, %s.%s.%s, PREFIX_OF_WORKER, wname,
IS_WORKER_DISABLED);
   +value = jk_map_get_bool(m, buf, 0);
   +if (!value)
   +rc = JK_FALSE;
   +}
   +return rc;
   +}
   +
void jk_set_log_format(const char *logformat)
{
jk_log_fmt = (logformat) ? logformat : JK_TIME_FORMAT;



   1.27  +3 -1
jakarta-tomcat-connectors/jk/native/common/jk_util.h

   Index: jk_util.h
   ===
   RCS file:
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_util.h,v
   retrieving revision 1.26
   retrieving revision 1.27
   diff -u -r1.26 -r1.27
   --- jk_util.h 16 Feb 2005 08:23:56 - 1.26
   +++ jk_util.h 16 Feb 2005 09:25:35 - 1.27
   @@ -78,6 +78,8 @@

int jk_get_worker_retries(jk_map_t *m, const char *wname, int def);

   +int jk_get_is_worker_disabled(jk_map_t *m, const char *wname);
   +
void jk_set_log_format(const char *logformat);

int jk_get_worker_list(jk_map_t *m, char ***list, unsigned
*num_of_wokers);




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



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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-02-17 Thread mturk
mturk   2005/02/17 00:28:41

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Small performance tune for balancers having single worker.
  There is no need to find best worker if there is only one.
  Single worker is used for workers that need full management.
  
  Revision  ChangesPath
  1.58  +20 -2 jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.57
  retrieving revision 1.58
  diff -u -r1.57 -r1.58
  --- jk_lb_worker.c17 Feb 2005 07:16:32 -  1.57
  +++ jk_lb_worker.c17 Feb 2005 08:28:41 -  1.58
  @@ -410,7 +410,25 @@
   int r;
   
   JK_TRACE_ENTER(l);
  -if (p-s-sticky_session) {
  +if (p-num_of_workers == 1) {
  +/* No need to find the best worker
  + * if there is a single one
  + */
  +if (p-lb_workers[0].s-in_error_state 
  +!p-lb_workers[0].s-is_disabled) {
  +retry_worker(p-lb_workers[0], p-s-recover_wait_time, l);
  +}
  +if (!p-lb_workers[0].s-in_error_state) {
  +p-lb_workers[0].r = (p-lb_workers[0].s-name[0]);
  +JK_TRACE_EXIT(l);
  +return p-lb_workers[0];
  +}
  +else {
  +JK_TRACE_EXIT(l);
  +return NULL;
  +}
  +}
  +else if (p-s-sticky_session) {
   sessionid = get_sessionid(s);
   }
   JK_ENTER_CS((p-cs), r);
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_status.c

2005-02-17 Thread mturk
mturk   2005/02/17 01:12:24

  Modified:jk/native/common jk_lb_worker.c jk_status.c
  Log:
  Remove unused variables. No functional change.
  
  Revision  ChangesPath
  1.59  +1 -3  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.58
  retrieving revision 1.59
  diff -u -r1.58 -r1.59
  --- jk_lb_worker.c17 Feb 2005 08:28:41 -  1.58
  +++ jk_lb_worker.c17 Feb 2005 09:12:24 -  1.59
  @@ -406,7 +406,6 @@
   {
   worker_record_t *rc = NULL;
   char *sessionid = NULL;
  -int domain_id = -1;
   int r;
   
   JK_TRACE_ENTER(l);
  @@ -672,7 +671,6 @@
 worker_names,
 num_of_workers)  num_of_workers) {
   unsigned int i = 0;
  -unsigned int j = 0;
   
   p-lb_workers = jk_pool_alloc(p-p,
 num_of_workers *
  
  
  
  1.16  +1 -5  jakarta-tomcat-connectors/jk/native/common/jk_status.c
  
  Index: jk_status.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_status.c,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- jk_status.c   16 Feb 2005 11:24:39 -  1.15
  +++ jk_status.c   17 Feb 2005 09:12:24 -  1.16
  @@ -392,7 +392,6 @@
   jk_puts(s, /tablebr /\n);
   if (selected = 0) {
   worker_record_t *wr = (lb-lb_workers[selected]);
  -ajp_worker_t *a = (ajp_worker_t *)wr-w-worker_private;
   jk_putv(s, hr /h3Edit worker settings for ,
   wr-s-name, /h3\n, NULL);
   jk_putv(s, form method=\GET\ action=\,
  @@ -635,9 +634,6 @@
   JK_TRACE_ENTER(l);
   
   if (pThis  pThis-worker_private) {
  -status_worker_t *p = pThis-worker_private;
  -
  -
   JK_TRACE_EXIT(l);
   return JK_TRUE;
   }
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-02-17 Thread mturk
mturk   2005/02/17 04:29:00

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Change some log messages. No functional change.
  
  Revision  ChangesPath
  1.60  +5 -2  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.59
  retrieving revision 1.60
  diff -u -r1.59 -r1.60
  --- jk_lb_worker.c17 Feb 2005 09:12:24 -  1.59
  +++ jk_lb_worker.c17 Feb 2005 12:29:00 -  1.60
  @@ -433,7 +433,7 @@
   JK_ENTER_CS((p-cs), r);
   if (!r) {
  jk_log(l, JK_LOG_ERROR,
  -  getting thread lock errno=%d,
  +  locking thread with errno=%d,
 errno);
   JK_TRACE_EXIT(l);
   return NULL;
  @@ -766,6 +766,9 @@
   
   JK_INIT_CS((p-cs), i);
   if (i == JK_FALSE) {
  +jk_log(log, JK_LOG_ERROR,
  +   creating thread lock errno=%d,
  +   errno);
   JK_TRACE_EXIT(log);
   return JK_FALSE;
   }
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_status.c

2005-02-17 Thread mturk
mturk   2005/02/17 05:41:04

  Modified:jk/native/common jk_lb_worker.c jk_status.c
  Log:
  Display the number of workers currently serving requests.
  
  Revision  ChangesPath
  1.61  +6 -2  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.60
  retrieving revision 1.61
  diff -u -r1.60 -r1.61
  --- jk_lb_worker.c17 Feb 2005 12:29:00 -  1.60
  +++ jk_lb_worker.c17 Feb 2005 13:41:04 -  1.61
  @@ -547,12 +547,16 @@
   /* Reset endpoint read and write sizes for
* this request.
*/
  -end-rd = end-wr = 0;
  +end-rd = end-wr = 0;
  +/* Increment the number of workers serving request */
  +p-worker-s-busy++;
   service_ok = end-service(end, s, l, is_service_error);
   /* Update partial reads and writes if any */
   rec-s-readed += end-rd;
   rec-s-transferred += end-wr;
   end-done(end, l);
  +/* Decrement the busy worker count */
  +p-worker-s-busy--;
   if (service_ok) {
   rec-s-in_error_state = JK_FALSE;
   rec-s-in_recovering = JK_FALSE;
  
  
  
  1.17  +3 -2  jakarta-tomcat-connectors/jk/native/common/jk_status.c
  
  Index: jk_status.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_status.c,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- jk_status.c   17 Feb 2005 09:12:24 -  1.16
  +++ jk_status.c   17 Feb 2005 13:41:04 -  1.17
  @@ -356,7 +356,7 @@
   jk_puts(s, table border=\0\tr
   thName/ththType/ththHost/ththAddr/th
   
thStat/ththF/ththV/ththAcc/ththErr/th
  -thWr/ththRd/ththRR/ththCd/th/tr\n);
  +
thWr/ththRd/ththBusy/ththRR/ththCd/th/tr\n);
   for (j = 0; j  lb-num_of_workers; j++) {
   worker_record_t *wr = (lb-lb_workers[j]);
   ajp_worker_t *a = (ajp_worker_t *)wr-w-worker_private;
  @@ -384,6 +384,7 @@
   /td, NULL);
   jk_putv(s, td, status_strfsize(wr-s-readed, buf),
   /tdtd, NULL);
  +jk_printf(s, td%u/td, wr-s-busy);
   jk_puts(s, wr-s-redirect);
   jk_puts(s, /tdtd\n);
   jk_puts(s, wr-s-domain);
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-02-17 Thread mturk
mturk   2005/02/17 05:48:47

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Update number of used endpoinds for each elected worker.
  
  Revision  ChangesPath
  1.62  +3 -1  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.61
  retrieving revision 1.62
  diff -u -r1.61 -r1.62
  --- jk_lb_worker.c17 Feb 2005 13:41:04 -  1.61
  +++ jk_lb_worker.c17 Feb 2005 13:48:47 -  1.62
  @@ -550,12 +550,14 @@
   end-rd = end-wr = 0;
   /* Increment the number of workers serving request */
   p-worker-s-busy++;
  +rec-s-busy++;
   service_ok = end-service(end, s, l, is_service_error);
   /* Update partial reads and writes if any */
   rec-s-readed += end-rd;
   rec-s-transferred += end-wr;
   end-done(end, l);
   /* Decrement the busy worker count */
  +rec-s-busy--;
   p-worker-s-busy--;
   if (service_ok) {
   rec-s-in_error_state = JK_FALSE;
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_lb_worker.h

2005-02-16 Thread mturk
mturk   2005/02/16 00:27:53

  Modified:jk/native/common jk_lb_worker.c jk_lb_worker.h
  Log:
  Rewrite load balancer. Added byrequest and bytraffic methods.
  Also keep session and domain models. Added sticky_session_force,
  for non replicated Tomcats.
  
  Revision  ChangesPath
  1.51  +264 -277  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- jk_lb_worker.c15 Feb 2005 08:52:53 -  1.50
  +++ jk_lb_worker.c16 Feb 2005 08:27:52 -  1.51
  @@ -42,16 +42,6 @@
   #define WAIT_BEFORE_RECOVER (60*1)
   #define WORKER_RECOVER_TIME (recover_time)
   
  -static const char *search_types[] = {
  -any,
  -sticky,
  -redirect,
  -sticky domain,
  -local,
  -local domain,
  -NULL
  -};
  -
   struct lb_endpoint
   {
   jk_endpoint_t *e;
  @@ -173,160 +163,223 @@
   }
   }
   
  +static void retry_worker(worker_record_t *w,
  + int recover_wait_time,
  + jk_logger_t *l)
  +{
  +int elapsed = (int)(time(0) - w-s-error_time);
  +JK_TRACE_ENTER(l);
   
  -static int is_worker_candidate(worker_record_t *wr,
  -   int search_id,
  -   const char *search_string,
  -   jk_logger_t *l)
  -{
  -switch (search_id) {
  -case 0:
  -return JK_TRUE;
  -case 1:
  -if (strcmp(search_string, wr-s-name) == 0) {
  -return JK_TRUE;
  -}
  -break;
  -case 2:
  -if (strcmp(search_string, wr-s-name) == 0) {
  -return JK_TRUE;
  -}
  -break;
  -case 3:
  -if (strcmp(search_string, wr-s-domain) == 0) {
  -return JK_TRUE;
  -}
  -break;
  -case 4:
  -if (wr-s-is_local_worker) {
  -return JK_TRUE;
  -}
  -break;
  -case 5:
  -if (wr-s-is_local_domain) {
  -return JK_TRUE;
  -}
  -break;
  +if (elapsed = recover_wait_time) {
  +if (JK_IS_DEBUG_LEVEL(l))
  +jk_log(l, JK_LOG_DEBUG,
  +worker %s is in error state - will not yet recover (%d 
 %d),
  +w-s-name, elapsed, recover_wait_time);
   }
  -return JK_FALSE;
  +else {
  +if (JK_IS_DEBUG_LEVEL(l))
  +jk_log(l, JK_LOG_DEBUG,
  +worker %s is in error state - will recover,
  +w-s-name);
  +w-s-in_recovering  = JK_TRUE;
  +w-s-in_error_state = JK_FALSE;
  +}
  +
  +JK_TRACE_EXIT(l);
   }
   
  -static worker_record_t *get_suitable_worker(lb_worker_t *p, 
  -int search_id,
  -const char *search_string,
  -int start,
  -int stop,
  -int use_lb_factor,
  -int *domain_id,
  -jk_logger_t *l)
  +static worker_record_t *find_by_session(lb_worker_t *p, 
  +const char *name,
  +jk_logger_t *l)
   {
   
   worker_record_t *rc = NULL;
  -int lb_max = 0;
  -int total_factor = 0;
  -const char *search_type = search_types[search_id];
  -int i;
  +unsigned int i;
   
  -*domain_id = -1;
  -
  -JK_ENTER_CS((p-cs), i);
  -if (!i) {
  -jk_log(l, JK_LOG_ERROR,
  -   could not lock load balancer = %s,
  -   p-s-name);
  -return NULL;
  +for (i = 0; i  p-num_of_workers; i++) {
  +if (strcmp(p-lb_workers[i].s-name, name) == 0) {
  +rc = p-lb_workers[i];
  +break;
  +}
   }
  -if (JK_IS_DEBUG_LEVEL(l))
  -   jk_log(l, JK_LOG_DEBUG,
  -  searching for %s worker (%s),
  -  search_type, search_string);
  +return rc;
  +}
   
  -for (i = start; i  stop; i++) {
  -if (search_id  3  p-lb_workers[i].s-is_disabled) {
  +static worker_record_t *find_best_bydomain(lb_worker_t *p,
  +   const char *domain,
  +   jk_logger_t *l)

  +{

  +unsigned int i;

  +int total_factor = 0;

  +worker_record_t *candidate = NULL;

  +

  +/* First try to see if we have available candidate */

  +for (i = 0; i  p-num_of_workers; i++) {

  +/* Skip 

cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-02-16 Thread mturk
mturk   2005/02/16 00:30:58

  Modified:jk/native/common jk_lb_worker.c
  Log:
  You already know ... Remove the CRLFs. SVN, you are my last chance!
  
  Revision  ChangesPath
  1.52  +130 -130  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -r1.51 -r1.52
  --- jk_lb_worker.c16 Feb 2005 08:27:52 -  1.51
  +++ jk_lb_worker.c16 Feb 2005 08:30:58 -  1.52
  @@ -207,112 +207,112 @@
   
   static worker_record_t *find_best_bydomain(lb_worker_t *p,
  const char *domain,
  -   jk_logger_t *l)

  -{

  -unsigned int i;

  -int total_factor = 0;

  -worker_record_t *candidate = NULL;

  -

  -/* First try to see if we have available candidate */

  -for (i = 0; i  p-num_of_workers; i++) {

  -/* Skip all workers that are not member of domain */

  -if (strlen(p-lb_workers[i].s-domain) == 0 ||

  -strcmp(p-lb_workers[i].s-domain, domain))

  -continue;

  -/* Take into calculation only the workers that are

  - * not in error state or not disabled.

  - */

  -if (!p-lb_workers[i].s-in_error_state 

  -!p-lb_workers[i].s-is_disabled) {

  -p-lb_workers[i].s-lb_value += p-lb_workers[i].s-lb_factor;

  -total_factor += p-lb_workers[i].s-lb_factor;

  -if (!candidate || p-lb_workers[i].s-lb_value  
candidate-s-lb_value)

  -candidate = p-lb_workers[i];

  -}

  -}

  -

  -if (candidate) {

  -candidate-s-lb_value -= total_factor;

  -}

  -

  -return candidate;

  -}

  +   jk_logger_t *l)
  +{
  +unsigned int i;
  +int total_factor = 0;
  +worker_record_t *candidate = NULL;
  +
  +/* First try to see if we have available candidate */
  +for (i = 0; i  p-num_of_workers; i++) {
  +/* Skip all workers that are not member of domain */
  +if (strlen(p-lb_workers[i].s-domain) == 0 ||
  +strcmp(p-lb_workers[i].s-domain, domain))
  +continue;
  +/* Take into calculation only the workers that are
  + * not in error state or not disabled.
  + */
  +if (!p-lb_workers[i].s-in_error_state 
  +!p-lb_workers[i].s-is_disabled) {
  +p-lb_workers[i].s-lb_value += p-lb_workers[i].s-lb_factor;
  +total_factor += p-lb_workers[i].s-lb_factor;
  +if (!candidate || p-lb_workers[i].s-lb_value  
candidate-s-lb_value)
  +candidate = p-lb_workers[i];
  +}
  +}
  +
  +if (candidate) {
  +candidate-s-lb_value -= total_factor;
  +}
  +
  +return candidate;
  +}
   
   
   static worker_record_t *find_best_byrequests(lb_worker_t *p,
  - jk_logger_t *l)

  -{

  -unsigned int i;

  -int total_factor = 0;

  -worker_record_t *candidate = NULL;

  -

  -/* First try to see if we have available candidate */

  -for (i = 0; i  p-num_of_workers; i++) {

  -/* If the worker is in error state run

  - * retry on that worker. It will be marked as

  - * operational if the retry timeout is elapsed.

  - * The worker might still be unusable, but we try

  - * anyway.

  - */

  -if (p-lb_workers[i].s-in_error_state 

  -!p-lb_workers[i].s-is_disabled) {

  -retry_worker(p-lb_workers[i], p-s-recover_wait_time, l);

  -}

  -/* Take into calculation only the workers that are

  - * not in error state or not disabled.

  - */

  -if (!p-lb_workers[i].s-in_error_state 

  -!p-lb_workers[i].s-is_disabled) {

  -p-lb_workers[i].s-lb_value += p-lb_workers[i].s-lb_factor;

  -total_factor += p-lb_workers[i].s-lb_factor;

  -if (!candidate || p-lb_workers[i].s-lb_value  
candidate-s-lb_value)

  -candidate = p-lb_workers[i];

  -}

  -}

  -

  -if (candidate) {

  -candidate-s-lb_value -= total_factor;

  -}

  -

  -return candidate;

  -}

  + jk_logger_t *l)
  +{
  +unsigned int i;
  +int total_factor = 0;
  +worker_record_t *candidate = NULL;
  +
  +/* First try to see if we have available candidate */
  +for (i = 0; i  p-num_of_workers; i++) {
  +/* If the worker is in error state run
  + * retry on that worker. It will be marked as
  + * operational if the retry timeout is elapsed.
  + * The 

cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_util.c jk_util.h

2005-02-16 Thread mturk
mturk   2005/02/16 01:25:35

  Modified:jk/native/common jk_lb_worker.c jk_util.c jk_util.h
  Log:
  Added disabled boolean directive to worker. This is used for
  hot-standby workers that can be later enabled using jkstatus console.
  
  Revision  ChangesPath
  1.53  +3 -1  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- jk_lb_worker.c16 Feb 2005 08:30:58 -  1.52
  +++ jk_lb_worker.c16 Feb 2005 09:25:35 -  1.53
  @@ -643,6 +643,8 @@
   p-lb_workers[i].s-lb_value = p-lb_workers[i].s-lb_factor;
   p-lb_workers[i].s-in_error_state = JK_FALSE;
   p-lb_workers[i].s-in_recovering = JK_FALSE;
  +/* Worker can be initaly disabled as hot standby */
  +p-lb_workers[i].s-is_disabled = 
jk_get_is_worker_disabled(props, worker_names[i]);
   if (!wc_create_worker(p-lb_workers[i].s-name,
 props,
 (p-lb_workers[i].w),
  
  
  
  1.57  +16 -1 jakarta-tomcat-connectors/jk/native/common/jk_util.c
  
  Index: jk_util.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_util.c,v
  retrieving revision 1.56
  retrieving revision 1.57
  diff -u -r1.56 -r1.57
  --- jk_util.c 16 Feb 2005 08:23:56 -  1.56
  +++ jk_util.c 16 Feb 2005 09:25:35 -  1.57
  @@ -65,6 +65,7 @@
   #define REDIRECT_OF_WORKER  (redirect)
   #define MOUNT_OF_WORKER (mount)
   #define METHOD_OF_WORKER(method)
  +#define IS_WORKER_DISABLED  (disabled)
   
   #define DEFAULT_WORKER_TYPE JK_AJP13_WORKER_NAME
   #define SECRET_KEY_OF_WORKER(secretkey)
  @@ -640,6 +641,20 @@
   return JK_FALSE;
   }
   
  +int jk_get_is_worker_disabled(jk_map_t *m, const char *wname)
  +{
  +int rc = JK_TRUE;
  +char buf[1024];
  +if (m  wname) {
  +int value;
  +sprintf(buf, %s.%s.%s, PREFIX_OF_WORKER, wname, 
IS_WORKER_DISABLED);
  +value = jk_map_get_bool(m, buf, 0);
  +if (!value)
  +rc = JK_FALSE;
  +}
  +return rc;
  +}
  +
   void jk_set_log_format(const char *logformat)
   {
   jk_log_fmt = (logformat) ? logformat : JK_TIME_FORMAT;
  
  
  
  1.27  +3 -1  jakarta-tomcat-connectors/jk/native/common/jk_util.h
  
  Index: jk_util.h
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_util.h,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- jk_util.h 16 Feb 2005 08:23:56 -  1.26
  +++ jk_util.h 16 Feb 2005 09:25:35 -  1.27
  @@ -78,6 +78,8 @@
   
   int jk_get_worker_retries(jk_map_t *m, const char *wname, int def);
   
  +int jk_get_is_worker_disabled(jk_map_t *m, const char *wname);
  +
   void jk_set_log_format(const char *logformat);
   
   int jk_get_worker_list(jk_map_t *m, char ***list, unsigned *num_of_wokers);
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-02-16 Thread mturk
mturk   2005/02/16 04:00:19

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Add traffic method for sticky sessions too.
  
  Revision  ChangesPath
  1.54  +20 -6 jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.53
  retrieving revision 1.54
  diff -u -r1.53 -r1.54
  --- jk_lb_worker.c16 Feb 2005 09:25:35 -  1.53
  +++ jk_lb_worker.c16 Feb 2005 12:00:18 -  1.54
  @@ -211,6 +211,9 @@
   {
   unsigned int i;
   int total_factor = 0;
  +size_t mytraffic = 0;
  +size_t curmin = 0;
  +
   worker_record_t *candidate = NULL;
   
   /* First try to see if we have available candidate */
  @@ -224,15 +227,26 @@
*/
   if (!p-lb_workers[i].s-in_error_state 
   !p-lb_workers[i].s-is_disabled) {
  -p-lb_workers[i].s-lb_value += p-lb_workers[i].s-lb_factor;
  -total_factor += p-lb_workers[i].s-lb_factor;
  -if (!candidate || p-lb_workers[i].s-lb_value  
candidate-s-lb_value)
  -candidate = p-lb_workers[i];
  +if (p-lbmethod == JK_LB_BYREQUESTS) {
  +p-lb_workers[i].s-lb_value += 
p-lb_workers[i].s-lb_factor;
  +total_factor += p-lb_workers[i].s-lb_factor;
  +if (!candidate || p-lb_workers[i].s-lb_value  
candidate-s-lb_value)
  +candidate = p-lb_workers[i];
  +}
  +else {
  +mytraffic = 
(p-lb_workers[i].s-transferred/p-lb_workers[i].s-lb_factor) +
  +
(p-lb_workers[i].s-readed/p-lb_workers[i].s-lb_factor);
  +if (!candidate || mytraffic  curmin) {
  +candidate = p-lb_workers[i];
  +curmin = mytraffic;
  +}
  +}
   }
   }
   
   if (candidate) {
  -candidate-s-lb_value -= total_factor;
  +if (p-lbmethod == JK_LB_BYREQUESTS)
  +candidate-s-lb_value -= total_factor;
   }
   
   return candidate;
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-02-16 Thread mturk
mturk   2005/02/16 05:46:30

  Modified:jk/native/common jk_lb_worker.c
  Log:
  If we can't get the endpoint try another worker by checking is_recoverable
  only when we got the endpoint and endpoint service has been called.
  
  Revision  ChangesPath
  1.55  +3 -3  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.54
  retrieving revision 1.55
  diff -u -r1.54 -r1.55
  --- jk_lb_worker.c16 Feb 2005 12:00:18 -  1.54
  +++ jk_lb_worker.c16 Feb 2005 13:46:30 -  1.55
  @@ -483,7 +483,6 @@
   
   if (e  e-endpoint_private  s  is_recoverable_error) {
   lb_endpoint_t *p = e-endpoint_private;
  -jk_endpoint_t *end = NULL;
   int attempt = 0;
   
   /* you can not recover on another load balancer */
  @@ -506,6 +505,7 @@
   
   if (rec) {
   int is_recoverable = JK_FALSE;
  +jk_endpoint_t *end = NULL;
   
   s-jvm_route = jk_pool_strdup(s-pool, rec-s-name);
   
  @@ -542,7 +542,7 @@
   rec-s-in_recovering = JK_FALSE;
   rec-s-error_time = time(0);
   
  -if (!is_recoverable) {
  +if (end  !is_recoverable) {
   /*
* Error is not recoverable - break with an error.
*/
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_lb_worker.h

2005-02-16 Thread mturk
mturk   2005/02/16 23:16:32

  Modified:jk/native/common jk_lb_worker.c jk_lb_worker.h
  Log:
  Set service route to either worker name or worker domain, depending
  on how the worker has been elected.
  
  Revision  ChangesPath
  1.57  +27 -19jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.56
  retrieving revision 1.57
  diff -u -r1.56 -r1.57
  --- jk_lb_worker.c16 Feb 2005 15:09:21 -  1.56
  +++ jk_lb_worker.c17 Feb 2005 07:16:32 -  1.57
  @@ -173,13 +173,13 @@
   if (elapsed = recover_wait_time) {
   if (JK_IS_DEBUG_LEVEL(l))
   jk_log(l, JK_LOG_DEBUG,
  -worker %s is in error state - will not yet recover (%d 
 %d),
  -w-s-name, elapsed, recover_wait_time);
  +worker %s will recover in %d seconds,
  +w-s-name, recover_wait_time - elapsed);
   }
   else {
   if (JK_IS_DEBUG_LEVEL(l))
   jk_log(l, JK_LOG_DEBUG,
  -worker %s is in error state - will recover,
  +worker %s is marked for recover,
   w-s-name);
   w-s-in_recovering  = JK_TRUE;
   w-s-in_error_state = JK_FALSE;
  @@ -247,6 +247,7 @@
   if (candidate) {
   if (p-lbmethod == JK_LB_BYREQUESTS)
   candidate-s-lb_value -= total_factor;
  +candidate-r = (candidate-s-domain[0]);
   }
   
   return candidate;
  @@ -286,6 +287,7 @@
   
   if (candidate) {
   candidate-s-lb_value -= total_factor;
  +candidate-r = (candidate-s-name[0]);
   }
   
   return candidate;
  @@ -337,6 +339,9 @@
   rc = find_best_byrequests(p, l);
   else if (p-lbmethod == JK_LB_BYTRAFFIC)
   rc = find_best_bytraffic(p, l);
  +/* By default use worker name as session route */
  +if (rc)
  +rc-r = (rc-s-name[0]);
   
   return rc;
   }
  @@ -485,7 +490,7 @@
   lb_endpoint_t *p = e-endpoint_private;
   int attempt = 0;
   int num_of_workers = p-worker-num_of_workers;
  -/* you can not recover on another load balancer */
  +/* Set returned error to OK */
   *is_error = JK_HTTP_OK;
   
   /* set the recovery post, for LB mode */
  @@ -505,10 +510,15 @@
   
   if (rec) {
   int is_service_error = JK_HTTP_OK;
  +int service_ok = JK_FALSE;
   jk_endpoint_t *end = NULL;
  -
  -s-jvm_route = jk_pool_strdup(s-pool, rec-s-name);
  -
  +
  +/* XXX: No need to strdup here ? */
  +#if 0
  +s-jvm_route = jk_pool_strdup(s-pool, rec-r);
  +#else
  +s-jvm_route = rec-r;
  +#endif
   rc = rec-w-get_endpoint(rec-w, end, l);
   
   if (JK_IS_DEBUG_LEVEL(l))
  @@ -517,17 +527,16 @@
  rec-s-name, s-jvm_route, rc);
   rec-s-elected++;
   if (rc  end) {
  -int src;
   /* Reset endpoint read and write sizes for
* this request.
*/
   end-rd = end-wr = 0;
  -src = end-service(end, s, l, is_service_error);
  +service_ok = end-service(end, s, l, is_service_error);
   /* Update partial reads and writes if any */
   rec-s-readed += end-rd;
   rec-s-transferred += end-wr;
   end-done(end, l);
  -if (src) {
  +if (service_ok) {
   rec-s-in_error_state = JK_FALSE;
   rec-s-in_recovering = JK_FALSE;
   rec-s-error_time = 0;
  @@ -535,7 +544,7 @@
   return JK_TRUE;
   }
   }
  -if (end) {
  +if (!service_ok) {
   /*
   * Service failed !!!
   *
  @@ -560,6 +569,9 @@
   JK_TRACE_EXIT(l);
   return JK_FALSE;
   }
  +jk_log(l, JK_LOG_INFO,
  +   service failed, worker %s is in error state,
  +   rec-s-name);
   }
   else {
   /* If we can not get the endpoint from the worker
  @@ -588,8 +600,7 @@
   }
   }
   jk_log(l, JK_LOG_INFO,
  -   All tomcat instances are busy, no more endpoints left. 
  -   Rise cache_size to match the load);
  

cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_lb_worker.h

2005-02-14 Thread mturk
mturk   2005/02/14 09:22:36

  Modified:jk/native/common jk_lb_worker.c jk_lb_worker.h
  Log:
  Make lb_worker_t structure public so jkstatus can us it.
  
  Revision  ChangesPath
  1.48  +7 -30 jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- jk_lb_worker.c13 Feb 2005 12:21:57 -  1.47
  +++ jk_lb_worker.c14 Feb 2005 17:22:35 -  1.48
  @@ -52,33 +52,6 @@
   NULL
   };
   
  -struct worker_record
  -{
  -jk_worker_t *w;
  -/* Shared memory worker data */
  -jk_shm_worker_t  *s;
  -};
  -
  -typedef struct worker_record worker_record_t;
  -
  -struct lb_worker
  -{
  -worker_record_t *lb_workers;
  -unsigned num_of_workers;
  -unsigned num_of_local_workers;
  -
  -jk_pool_t p;
  -jk_pool_atom_t buf[TINY_POOL_SIZE];
  -
  -jk_worker_t worker;
  -JK_CRIT_SEC cs; 
  -
  -/* Shared memory worker data */
  -jk_shm_worker_t  *s;
  -};
  -
  -typedef struct lb_worker lb_worker_t;
  -
   struct lb_endpoint
   {
   jk_endpoint_t *e;
  @@ -470,9 +443,13 @@
   jk_log(l, JK_LOG_DEBUG,
  service worker=%s jvm_route=%s rc=%d,
  rec-s-name, s-jvm_route, rc);
  -
  +rec-s-elected++;
   if (rc  end) {
  -int src = end-service(end, s, l, is_recoverable);
  +int src;
  +end-rd = end-wr = 0;
  +src = end-service(end, s, l, is_recoverable);
  +rec-s-readed += end-rd;
  +rec-s-transferred += end-wr;
   end-done(end, l);
   if (src) {
   rec-s-in_error_state = JK_FALSE;
  
  
  
  1.10  +28 -1 jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.h
  
  Index: jk_lb_worker.h
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.h,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- jk_lb_worker.h7 Dec 2004 12:24:53 -   1.9
  +++ jk_lb_worker.h14 Feb 2005 17:22:35 -  1.10
  @@ -25,6 +25,8 @@
   
   #include jk_logger.h
   #include jk_service.h
  +#include jk_mt.h
  +#include jk_shm.h
   
   #ifdef __cplusplus
   extern C
  @@ -34,6 +36,31 @@
   #define JK_LB_WORKER_NAME (lb)
   #define JK_LB_DEF_DOMAIN_NAME (unknown)
   
  +struct worker_record
  +{
  +jk_worker_t *w;
  +/* Shared memory worker data */
  +jk_shm_worker_t  *s;
  +};
  +typedef struct worker_record worker_record_t;
  +
  +struct lb_worker
  +{
  +worker_record_t *lb_workers;
  +unsigned num_of_workers;
  +unsigned num_of_local_workers;
  +
  +jk_pool_t p;
  +jk_pool_atom_t buf[TINY_POOL_SIZE];
  +
  +jk_worker_t worker;
  +JK_CRIT_SEC cs; 
  +
  +/* Shared memory worker data */
  +jk_shm_worker_t  *s;
  +};
  +typedef struct lb_worker lb_worker_t;
  +
   int JK_METHOD lb_worker_factory(jk_worker_t **w,
   const char *name, jk_logger_t *l);
   
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-02-13 Thread mturk
mturk   2005/02/13 04:21:57

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Use shm_alloc_worker, so that worker get it's id set, and that we can
  monitor the total number of workers.
  
  Revision  ChangesPath
  1.47  +3 -3  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- jk_lb_worker.c12 Feb 2005 19:22:35 -  1.46
  +++ jk_lb_worker.c13 Feb 2005 12:21:57 -  1.47
  @@ -580,7 +580,7 @@
   }
   
   for (i = 0; i  num_of_workers; i++) {
  -p-lb_workers[i].s = jk_shm_alloc(p-p, 
sizeof(jk_shm_worker_t));
  +p-lb_workers[i].s = jk_shm_alloc_worker(p-p);
   if (p-lb_workers[i].s == NULL) {
   jk_log(l, JK_LOG_ERROR, 
  allocating worker record from shared memory);
  @@ -778,7 +778,7 @@
   private_data-buf,
   sizeof(jk_pool_atom_t) * TINY_POOL_SIZE);
   
  -private_data-s = jk_shm_alloc(private_data-p, 
sizeof(jk_shm_worker_t));
  +private_data-s = jk_shm_alloc_worker(private_data-p);
   if (!private_data-s) {
   free(private_data);
   JK_TRACE_EXIT(l);
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_shm.c jk_shm.h

2005-02-12 Thread mturk
mturk   2005/02/12 03:32:13

  Modified:jk/native/common jk_lb_worker.c jk_shm.c jk_shm.h
  Log:
  Simplify shared memory. If shmem is not defined use plain jk_pool instead.
  
  Revision  ChangesPath
  1.44  +5 -5  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- jk_lb_worker.c9 Feb 2005 12:34:13 -   1.43
  +++ jk_lb_worker.c12 Feb 2005 11:32:12 -  1.44
  @@ -56,7 +56,7 @@
   {
   jk_worker_t *w;
   /* Shared memory worker data */
  -jk_shm_w_rec_t  *s;
  +jk_shm_worker_t  *s;
   };
   
   typedef struct worker_record worker_record_t;
  @@ -74,7 +74,7 @@
   JK_CRIT_SEC cs; 
   
   /* Shared memory worker data */
  -jk_shm_w_rec_t  *s;
  +jk_shm_worker_t  *s;
   };
   
   typedef struct lb_worker lb_worker_t;
  @@ -575,7 +575,7 @@
 num_of_workers *
 sizeof(worker_record_t));
   for (i = 0; i  num_of_workers; i++) {
  -p-lb_workers[i].s = jk_shm_worker_alloc();
  +p-lb_workers[i].s = jk_shm_alloc(p-p, 
sizeof(jk_shm_worker_t));
   if (p-lb_workers[i].s == NULL) {
   JK_TRACE_EXIT(l);
   return JK_FALSE;
  @@ -776,7 +776,7 @@
   private_data-buf,
   sizeof(jk_pool_atom_t) * TINY_POOL_SIZE);
   
  -private_data-s = jk_shm_worker_alloc();
  +private_data-s = jk_shm_alloc(private_data-p, 
sizeof(jk_shm_worker_t));
   if (!private_data-s) {
   free(private_data);
   JK_TRACE_EXIT(l);
  
  
  
  1.8   +29 -60jakarta-tomcat-connectors/jk/native/common/jk_shm.c
  
  Index: jk_shm.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_shm.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- jk_shm.c  7 Feb 2005 19:06:34 -   1.7
  +++ jk_shm.c  12 Feb 2005 11:32:12 -  1.8
  @@ -24,16 +24,17 @@
   #include jk_shm.h
   
   /** jk shm header record structure */
  -struct jk_shm_h_rec
  +struct jk_shm_header
   {
   /* Shared memory magic JK_SHM_MAGIC */
  -charmagic[8];
  -int workers;
  -int allocated;
  -jk_shm_w_rec_t  *pr[1];
  -jk_shm_w_rec_t  rr[1];
  +char   magic[8];
  +size_t size;
  +size_t pos;
  +intchilds;
  +char   buf[1];
   };
  -typedef struct jk_shm_h_rec jk_shm_h_rec_t;
  +
  +typedef struct jk_shm_header jk_shm_header_t;
   
   /** jk shm structure */
   struct jk_shm
  @@ -42,13 +43,13 @@
   const char *filename;
   intfd;
   intattached;
  -jk_shm_h_rec_t  *hdr;
  +jk_shm_header_t  *hdr;
   };
   
   typedef struct jk_shm jk_shm_t;
   
   static const char shm_signature[] = { JK_SHM_MAGIC };
  -static jk_shm_t jk_shmem = { 0, NULL, -1, 0, NULL};;
  +static jk_shm_t jk_shmem = { 0, NULL, -1, 0, NULL};
   
   #if defined (WIN32) || defined(NETWARE)
   
  @@ -59,17 +60,16 @@
   return 0;
   }
   
  -jk_shmem.size =  JK_SHM_ALIGN(sizeof(jk_shm_h_rec_t) + 
JK_SHM_MAX_WORKERS * sizeof(jk_shm_w_rec_t));
  +jk_shmem.size =  JK_SHM_ALIGN(sizeof(jk_shm_header_t) + JK_SHM_SIZE);
   
  -jk_shmem.hdr = (jk_shm_h_rec_t *)calloc(1, jk_shmem.size);
  +jk_shmem.hdr = (jk_shm_header_t *)calloc(1, jk_shmem.size);
   if (!jk_shmem.hdr)
   return -1;
   jk_shmem.filename = memory;
   jk_shmem.fd   = 0;
   jk_shmem.attached = 0;
  -
   memcpy(jk_shmem.hdr-magic, shm_signature, 8);
  -jk_shmem.hdr-workers = JK_SHM_MAX_WORKERS;
  +jk_shmem.hdr-size = JK_SHM_SIZE;
   return 0;
   }
   
  @@ -77,6 +77,7 @@
   {
   if (!jk_shm_open(fname)) {
   jk_shmem.attached = 1;
  +jk_shmem.hdr-childs++;
   return 0;
   }
   else
  @@ -122,18 +123,11 @@
   
   /* Use plain memory in case there is no file name */
   if (!fname) {
  -jk_shmem.size = JK_SHM_ALIGN(sizeof(jk_shm_h_rec_t) + 
JK_SHM_MAX_WORKERS * sizeof(jk_shm_w_rec_t *));
  -jk_shmem.hdr  = calloc(1, jk_shmem.size);
  -if (!jk_shmem.hdr)
  -return -1;
  -memcpy(jk_shmem.hdr-magic, shm_signature, 8);
  -jk_shmem.hdr-workers   = JK_SHM_MAX_WORKERS;
  -jk_shmem.hdr-allocated = 0;
  -jk_shmem.filename   = memory;
  +jk_shmem.filename  = memory;
   return 0;
   }
   
  -jk_shmem.size = JK_SHM_ALIGN(sizeof(jk_shm_h_rec_t) + JK_SHM_MAX_WORKERS 
* sizeof(jk_shm_w_rec_t));
  +

cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-02-12 Thread mturk
mturk   2005/02/12 08:59:45

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Check if malloc has failed before using that memory, not after.
  
  Revision  ChangesPath
  1.45  +6 -5  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- jk_lb_worker.c12 Feb 2005 11:32:12 -  1.44
  +++ jk_lb_worker.c12 Feb 2005 16:59:45 -  1.45
  @@ -574,6 +574,11 @@
   p-lb_workers = jk_pool_alloc(p-p,
 num_of_workers *
 sizeof(worker_record_t));
  +if (!p-lb_workers) {
  +JK_TRACE_EXIT(l);
  +return JK_FALSE;
  +}
  +
   for (i = 0; i  num_of_workers; i++) {
   p-lb_workers[i].s = jk_shm_alloc(p-p, 
sizeof(jk_shm_worker_t));
   if (p-lb_workers[i].s == NULL) {
  @@ -581,10 +586,6 @@
   return JK_FALSE;
   }
   }
  -if (!p-lb_workers) {
  -JK_TRACE_EXIT(l);
  -return JK_FALSE;
  -}
   
   for (i = 0; i  num_of_workers; i++) {
   strncpy(p-lb_workers[i].s-name, worker_names[i],
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-02-12 Thread mturk
mturk   2005/02/12 11:22:35

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Log as error if shm_alloc fails.
  
  Revision  ChangesPath
  1.46  +3 -2  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- jk_lb_worker.c12 Feb 2005 16:59:45 -  1.45
  +++ jk_lb_worker.c12 Feb 2005 19:22:35 -  1.46
  @@ -582,11 +582,12 @@
   for (i = 0; i  num_of_workers; i++) {
   p-lb_workers[i].s = jk_shm_alloc(p-p, 
sizeof(jk_shm_worker_t));
   if (p-lb_workers[i].s == NULL) {
  +jk_log(l, JK_LOG_ERROR, 
  +   allocating worker record from shared memory);
   JK_TRACE_EXIT(l);
   return JK_FALSE;
   }
   }
  -
   for (i = 0; i  num_of_workers; i++) {
   strncpy(p-lb_workers[i].s-name, worker_names[i],
   JK_SHM_STR_SIZ);
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-02-09 Thread mturk
mturk   2005/02/09 03:46:57

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Use shared memory for worker record data. Now the runtime info
  is shared among all child processes.
  
  Revision  ChangesPath
  1.42  +68 -74jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- jk_lb_worker.c6 Feb 2005 13:30:34 -   1.41
  +++ jk_lb_worker.c9 Feb 2005 11:46:57 -   1.42
  @@ -29,6 +29,7 @@
   #include jk_worker.h
   #include jk_lb_worker.h
   #include jk_mt.h
  +#include jk_shm.h
   
   /*
* The load balancing code in this 
  @@ -51,25 +52,13 @@
   NULL
   };
   
  -/** 
  - * Worker record should be inside shared
  - * memory for correct behavior.
  - * Right now it operates on 'equal-load'
  - * presumption.
  - */
   struct worker_record
   {
  -const char *name;
  -const char *domain;
  -int lb_factor;
  -int lb_value;
  -int is_local_worker;
  -int is_local_domain;
  -int in_error_state;
  -int in_recovering;
  -time_t error_time;
  -jk_worker_t *w;
  +jk_worker_t *w;
  +/* Shared memory worker data */
  +jk_shm_w_rec_t  *s;
   };
  +
   typedef struct worker_record worker_record_t;
   
   struct lb_worker
  @@ -221,22 +210,22 @@
   {
   switch (search_id) {
   case 1:
  -if (strcmp(search_string, wr-name) == 0) {
  +if (strcmp(search_string, wr-s-name) == 0) {
   return JK_TRUE;
   }
   break;
   case 2:
  -if (strcmp(search_string, wr-domain) == 0) {
  +if (strcmp(search_string, wr-s-domain) == 0) {
   return JK_TRUE;
   }
   break;
   case 3:
  -if (wr-is_local_worker) {
  +if (wr-s-is_local_worker) {
   return JK_TRUE;
   }
   break;
   case 4:
  -if (wr-is_local_domain) {
  +if (wr-s-is_local_domain) {
   return JK_TRUE;
   }
   break;
  @@ -281,39 +270,40 @@
   if (JK_IS_DEBUG_LEVEL(l))
  jk_log(l, JK_LOG_DEBUG,
 found candidate worker %s (%d) for match with %s 
(%s),
  -  p-lb_workers[i].name, i, search_type, search_string);
  +  p-lb_workers[i].s-name, i, search_type, 
search_string);
   if (search_id == 1) {
   *domain_id = i;
   }
  -if (!p-lb_workers[i].in_error_state || 
!p-lb_workers[i].in_recovering) {
  +if (!p-lb_workers[i].s-in_error_state || 
!p-lb_workers[i].s-in_recovering) {
   if (JK_IS_DEBUG_LEVEL(l))
   jk_log(l, JK_LOG_DEBUG,
  found candidate worker %s (%d) with previous 
load %d in search with %s (%s),
  -   p-lb_workers[i].name, i, 
p-lb_workers[i].lb_value, search_type, search_string);
  +   p-lb_workers[i].s-name, i, 
p-lb_workers[i].s-lb_value,
  +   search_type, search_string);
   
  -if (p-lb_workers[i].in_error_state) {
  +if (p-lb_workers[i].s-in_error_state) {
   
   time_t now = time(0);
  -int elapsed = now - p-lb_workers[i].error_time;
  +int elapsed = now - p-lb_workers[i].s-error_time;
   if (elapsed = p-recover_wait_time) {
   if (JK_IS_DEBUG_LEVEL(l))
   jk_log(l, JK_LOG_DEBUG,
  worker candidate %s (%d) is in error 
state - will not yet recover (%d  %d),
  -   p-lb_workers[i].name, i, elapsed, 
p-recover_wait_time);
  +   p-lb_workers[i].s-name, i, elapsed, 
p-recover_wait_time);
   continue;
   }
   }
   
   if (use_lb_factor) {
  -p-lb_workers[i].lb_value += p-lb_workers[i].lb_factor;
  -total_factor += p-lb_workers[i].lb_factor;
  -if (p-lb_workers[i].lb_value  lb_max || !rc) {
  -lb_max = p-lb_workers[i].lb_value;
  +p-lb_workers[i].s-lb_value += 
p-lb_workers[i].s-lb_factor;
  +total_factor += p-lb_workers[i].s-lb_factor;
  +if (p-lb_workers[i].s-lb_value  lb_max || !rc) {
  +lb_max = p-lb_workers[i].s-lb_value;
   rc = (p-lb_workers[i]);
   if (JK_IS_DEBUG_LEVEL(l))
 

cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2005-02-09 Thread mturk
mturk   2005/02/09 04:34:13

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Use shared memory for lb_worker shared data too. This will allow to
  change sticky session processing at runtime.
  
  Revision  ChangesPath
  1.43  +33 -29jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- jk_lb_worker.c9 Feb 2005 11:46:57 -   1.42
  +++ jk_lb_worker.c9 Feb 2005 12:34:13 -   1.43
  @@ -70,13 +70,11 @@
   jk_pool_t p;
   jk_pool_atom_t buf[TINY_POOL_SIZE];
   
  -const char *name;
   jk_worker_t worker;
  -int in_local_worker_mode;
  -int local_worker_only;
  -int sticky_session;
  -int recover_wait_time;
   JK_CRIT_SEC cs; 
  +
  +/* Shared memory worker data */
  +jk_shm_w_rec_t  *s;
   };
   
   typedef struct lb_worker lb_worker_t;
  @@ -257,7 +255,7 @@
   if (!i) {
   jk_log(l, JK_LOG_ERROR,
  could not lock load balancer = %s,
  -   p-name);
  +   p-s-name);
   return NULL;
   }
   if (JK_IS_DEBUG_LEVEL(l))
  @@ -285,11 +283,11 @@
   
   time_t now = time(0);
   int elapsed = now - p-lb_workers[i].s-error_time;
  -if (elapsed = p-recover_wait_time) {
  +if (elapsed = p-s-recover_wait_time) {
   if (JK_IS_DEBUG_LEVEL(l))
   jk_log(l, JK_LOG_DEBUG,
  worker candidate %s (%d) is in error 
state - will not yet recover (%d  %d),
  -   p-lb_workers[i].s-name, i, elapsed, 
p-recover_wait_time);
  +   p-lb_workers[i].s-name, i, elapsed, 
p-s-recover_wait_time);
   continue;
   }
   }
  @@ -354,7 +352,7 @@
   int domain_id = -1;
   
   JK_TRACE_ENTER(l);
  -if (p-sticky_session) {
  +if (p-s-sticky_session) {
   sessionid = get_sessionid(s);
   }
   
  @@ -414,7 +412,7 @@
   return rc;
   }
   
  -if (p-local_worker_only) {
  +if (p-s-local_worker_only) {
   JK_TRACE_EXIT(l);
   return NULL;
   }
  @@ -454,7 +452,7 @@
   if (JK_IS_DEBUG_LEVEL(l))
   jk_log(l, JK_LOG_DEBUG,
  service sticky_session=%d,
  -   p-worker-sticky_session);
  +   p-worker-s-sticky_session);
   
   while (1) {
   worker_record_t *rec =
  @@ -561,13 +559,13 @@
   unsigned int num_of_workers;
   unsigned int num_of_local_workers;
   
  -p-in_local_worker_mode = JK_FALSE;
  -p-local_worker_only = jk_get_local_worker_only_flag(props, p-name);
  -p-sticky_session = jk_get_is_sticky_session(props, p-name);
  +p-s-in_local_worker_mode = JK_FALSE;
  +p-s-local_worker_only = jk_get_local_worker_only_flag(props, 
p-s-name);
  +p-s-sticky_session = jk_get_is_sticky_session(props, p-s-name);
   p-num_of_local_workers = 0;
   
   if (jk_get_lb_worker_list(props,
  -  p-name,
  +  p-s-name,
 worker_names,
 num_of_workers)  num_of_workers) {
   unsigned int i = 0;
  @@ -603,7 +601,7 @@
   p-lb_workers[i].s-is_local_worker =
   jk_get_is_local_worker(props, worker_names[i]);
   if (p-lb_workers[i].s-is_local_worker)
  -p-in_local_worker_mode = JK_TRUE;
  +p-s-in_local_worker_mode = JK_TRUE;
   /* 
* Allow using lb in fault-tolerant mode.
* A value of 0 means the worker will be used for all 
requests without
  @@ -633,8 +631,8 @@
   }
   num_of_local_workers = j;
   
  -if (!p-in_local_worker_mode) {
  -p-local_worker_only = JK_FALSE;
  +if (!p-s-in_local_worker_mode) {
  +p-s-local_worker_only = JK_FALSE;
   }
   
   if (i != num_of_workers) {
  @@ -670,10 +668,10 @@
   if (JK_IS_DEBUG_LEVEL(l)) {
   jk_log(l, JK_LOG_DEBUG,
  in_local_worker_mode: %s,
  -   (p-in_local_worker_mode ? true : false));
  +   (p-s-in_local_worker_mode ? true : false));
   jk_log(l, JK_LOG_DEBUG,
  local_worker_only: %s,
  -   

cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2004-12-17 Thread mturk
mturk   2004/12/17 00:33:43

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Search for domain types 3 and 4 only if the worker has local workers
  defined. They'll return null worker if not defined in any case.
  
  Revision  ChangesPath
  1.38  +22 -18jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- jk_lb_worker.c16 Dec 2004 15:07:55 -  1.37
  +++ jk_lb_worker.c17 Dec 2004 08:33:43 -  1.38
  @@ -392,7 +392,8 @@
  found domain %s in route %s\n,
  session_domain, session_route);
   
  -rc = get_suitable_worker(p, 2, session_domain, 0, 
p-num_of_workers, 1, domain_id, l);
  +rc = get_suitable_worker(p, 2, session_domain, 0, 
p-num_of_workers,
  + 1, domain_id, l);
   if (rc) {
   JK_TRACE_EXIT(l);
   return rc;
  @@ -403,25 +404,28 @@
   }
   
   
  +if (p-num_of_local_workers) {
  +rc = get_suitable_worker(p, 3, any, 0, p-num_of_local_workers,
  + 1, domain_id, l);
  +if (rc) {
  +JK_TRACE_EXIT(l);
  +return rc;
  +}
   
  -rc = get_suitable_worker(p, 3, any, 0, p-num_of_local_workers, 1, 
domain_id, l);
  -if (rc) {
  -JK_TRACE_EXIT(l);
  -return rc;
  -}
  -
  -if (p-local_worker_only) {
  -JK_TRACE_EXIT(l);
  -return NULL;
  -}
  +if (p-local_worker_only) {
  +JK_TRACE_EXIT(l);
  +return NULL;
  +}
   
  -rc = get_suitable_worker(p, 4, any, p-num_of_local_workers, 
p-num_of_workers, 1, domain_id, l);
  -if (rc) {
  -JK_TRACE_EXIT(l);
  -return rc;
  +rc = get_suitable_worker(p, 4, any, p-num_of_local_workers,
  + p-num_of_workers, 1, domain_id, l);
  +if (rc) {
  +JK_TRACE_EXIT(l);
  +return rc;
  +}
   }
  -
  -rc = get_suitable_worker(p, 5, any, p-num_of_local_workers, 
p-num_of_workers, 1, domain_id, l);
  +rc = get_suitable_worker(p, 5, any, p-num_of_local_workers, 
p-num_of_workers,
  + 1, domain_id, l);
   JK_TRACE_EXIT(l);
   return rc;
   }
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2004-12-16 Thread mturk
mturk   2004/12/16 02:56:03

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Make load balancer thread safe, since we can have a cross request
  corruption of data, so that we don't use the worker that some other
  thread marked as in error state.
  
  Revision  ChangesPath
  1.36  +25 -3 jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- jk_lb_worker.c7 Dec 2004 14:29:14 -   1.35
  +++ jk_lb_worker.c16 Dec 2004 10:56:03 -  1.36
  @@ -28,6 +28,7 @@
   #include jk_util.h
   #include jk_worker.h
   #include jk_lb_worker.h
  +#include jk_mt.h
   
   /*
* The load balancing code in this 
  @@ -86,6 +87,7 @@
   int local_worker_only;
   int sticky_session;
   int recover_wait_time;
  +JK_CRIT_SEC cs; 
   };
   
   typedef struct lb_worker lb_worker_t;
  @@ -262,12 +264,20 @@
   int total_factor = 0;
   const char *search_type = search_types[search_id];
   int i;
  -
  +
   *domain_id = -1;
   
  +JK_ENTER_CS((p-cs), i);
  +if (!i) {
  +jk_log(l, JK_LOG_ERROR,
  +   could not lock load balancer = %s\n,
  +   p-name);
  +return NULL;
  +}
   jk_log(l, JK_LOG_DEBUG,
  searching for %s worker (%s)\n,
  search_type, search_string);
  +
   for (i = start; i  stop; i++) {
  jk_log(l, JK_LOG_DEBUG,
testing worker %s (%d) for match with %s (%s)\n,
  @@ -328,11 +338,13 @@
   jk_log(l, JK_LOG_DEBUG,
  found worker %s with new load %d in search with %s (%s)\n,
  rc-name, rc-lb_value, search_type, search_string);
  +JK_LEAVE_CS((p-cs), i);
   return rc;
   }
   jk_log(l, JK_LOG_DEBUG,
  found no %s (%s) worker\n,
  search_type, search_string);
  +   JK_LEAVE_CS((p-cs), i);
   return rc;
   }
   
  @@ -669,6 +681,8 @@
   int i;
   
   lb_worker_t *p = (lb_worker_t *)pThis-worker_private;
  +JK_TRACE_ENTER(log);
  +
   pThis-retries = jk_get_worker_retries(props, p-name,
  JK_RETRIES);
   
  @@ -679,6 +693,13 @@
   if (p-recover_wait_time  WAIT_BEFORE_RECOVER)
   p-recover_wait_time = WAIT_BEFORE_RECOVER;
   
  +JK_INIT_CS((p-cs), i);
  +if (i == JK_FALSE) {
  +JK_TRACE_EXIT(log);
  +return JK_FALSE;
  +}
  +
  +JK_TRACE_EXIT(log);
   return JK_TRUE;
   }
   
  @@ -712,10 +733,11 @@
   JK_TRACE_ENTER(l);
   
   if (pThis  *pThis  (*pThis)-worker_private) {
  +unsigned int i;
   lb_worker_t *private_data = (*pThis)-worker_private;
   
   close_workers(private_data, private_data-num_of_workers, l);
  -
  +JK_DELETE_CS((private_data-cs), i);
   jk_close_pool(private_data-p);
   free(private_data);
   
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2004-12-16 Thread mturk
mturk   2004/12/16 07:07:55

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Reorganize logging for getting candidate worker. It is not an error
  if the domain is for the worker is not set.
  
  Revision  ChangesPath
  1.37  +5 -8  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- jk_lb_worker.c16 Dec 2004 10:56:03 -  1.36
  +++ jk_lb_worker.c16 Dec 2004 15:07:55 -  1.37
  @@ -243,9 +243,6 @@
   case 5:
   return JK_TRUE;
   }
  -jk_log(l, JK_LOG_ERROR,
  -wrong search id %d\n,
  -search_id);
   return JK_FALSE;
   }
   
  @@ -279,10 +276,10 @@
  search_type, search_string);
   
   for (i = start; i  stop; i++) {
  -   jk_log(l, JK_LOG_DEBUG,
  - testing worker %s (%d) for match with %s (%s)\n,
  - p-lb_workers[i].name, i, search_type, search_string);
   if (is_worker_candidate((p-lb_workers[i]), search_id, 
search_string, l)) {
  +   jk_log(l, JK_LOG_DEBUG,
  +  found candidate worker %s (%d) for match with %s (%s)\n,
  +  p-lb_workers[i].name, i, search_type, search_string);
   if (search_id == 1) {
   *domain_id = i;
   }
  @@ -344,7 +341,7 @@
   jk_log(l, JK_LOG_DEBUG,
  found no %s (%s) worker\n,
  search_type, search_string);
  -   JK_LEAVE_CS((p-cs), i);
  +JK_LEAVE_CS((p-cs), i);
   return rc;
   }
   
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_lb_worker.h jk_util.c jk_util.h

2004-12-07 Thread mturk
mturk   2004/12/07 04:24:53

  Modified:jk/native/common jk_lb_worker.c jk_lb_worker.h jk_util.c
jk_util.h
  Log:
  Make jk replication aware using domain model.
  Great patch from Rainer Jung.
  
  Revision  ChangesPath
  1.33  +219 -48   jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- jk_lb_worker.c26 Nov 2004 16:59:51 -  1.32
  +++ jk_lb_worker.c7 Dec 2004 12:24:53 -   1.33
  @@ -40,6 +40,16 @@
   #define WAIT_BEFORE_RECOVER (60*1)
   #define WORKER_RECOVER_TIME (recover_time)
   
  +static const char *search_types[] = {
  +none,
  +sticky,
  +sticky domain,
  +local,
  +local domain,
  +any,
  +NULL
  +};
  +
   /** 
* Worker record should be inside shared
* memory for correct behavior.
  @@ -49,9 +59,11 @@
   struct worker_record
   {
   char *name;
  +char *domain;
   int lb_factor;
   int lb_value;
   int is_local_worker;
  +int is_local_domain;
   int in_error_state;
   int in_recovering;
   time_t error_time;
  @@ -63,6 +75,7 @@
   {
   worker_record_t *lb_workers;
   unsigned num_of_workers;
  +unsigned num_of_local_workers;
   
   jk_pool_t p;
   jk_pool_atom_t buf[TINY_POOL_SIZE];
  @@ -198,77 +211,210 @@
   }
   }
   
  +
  +int is_worker_candidate(worker_record_t *wr,
  +int search_id,
  +const char *search_string,
  +jk_logger_t *l)
  +{
  +switch (search_id) {
  +case 1:
  +if (strcmp(search_string, wr-name) == 0) {
  +return JK_TRUE;
  +}
  +break;
  +case 2:
  +if (strcmp(search_string, wr-domain) == 0) {
  +return JK_TRUE;
  +}
  +break;
  +case 3:
  +if (wr-is_local_worker) {
  +return JK_TRUE;
  +}
  +break;
  +case 4:
  +if (wr-is_local_domain) {
  +return JK_TRUE;
  +}
  +break;
  +case 5:
  +return JK_TRUE;
  +}
  +jk_log(l, JK_LOG_ERROR,
  +wrong search id %d\n,
  +search_id);
  +return JK_FALSE;
  +}
  +
  +static worker_record_t *get_suitable_worker(lb_worker_t *p, 
  +int search_id,
  +const char *search_string,
  +int start,
  +int stop,
  +int use_lb_factor,
  +int *domain_id,
  +jk_logger_t *l)
  +{
  +
  +worker_record_t *rc = NULL;
  +int lb_max = 0;
  +int total_factor = 0;
  +const char *search_type = search_types[search_id];
  +int i;
  +
  +*domain_id = -1;
  +
  +jk_log(l, JK_LOG_DEBUG,
  +   searching for %s worker (%s)\n,
  +   search_type, search_string);
  +for (i = start; i  stop; i++) {
  +   jk_log(l, JK_LOG_DEBUG,
  + testing worker %s (%d) for match with %s (%s)\n,
  + p-lb_workers[i].name, i, search_type, search_string);
  +if (is_worker_candidate((p-lb_workers[i]), search_id, 
search_string, l)) {
  +if (search_id == 1) {
  +*domain_id = i;
  +}
  +if (!p-lb_workers[i].in_error_state || 
!p-lb_workers[i].in_recovering) {
  +jk_log(l, JK_LOG_DEBUG,
  +   found candidate worker %s (%d) with previous load %d 
in search with %s (%s)\n,
  +   p-lb_workers[i].name, i, p-lb_workers[i].lb_value, 
search_type, search_string);
  +
  +if (p-lb_workers[i].in_error_state) {
  +
  +time_t now = time(0);
  +int elapsed = now - p-lb_workers[i].error_time;
  +if (elapsed = p-recover_wait_time) {
  +jk_log(l, JK_LOG_DEBUG,
  +   worker candidate %s (%d) is in error state - 
will not yet recover (%d  %d)\n,
  +   p-lb_workers[i].name, i, elapsed, 
p-recover_wait_time);
  +continue;
  +}
  +}
  +
  +if (use_lb_factor) {
  +p-lb_workers[i].lb_value += p-lb_workers[i].lb_factor;
  +total_factor += p-lb_workers[i].lb_factor;
  +if (p-lb_workers[i].lb_value  lb_max || !rc) {
  +lb_max = p-lb_workers[i].lb_value;
  

cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_uri_worker_map.c jk_util.c

2004-12-07 Thread mturk
mturk   2004/12/07 05:23:14

  Modified:jk/native/common jk_lb_worker.c jk_uri_worker_map.c
jk_util.c
  Log:
  Fix compile time warnings
  
  Revision  ChangesPath
  1.34  +2 -3  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- jk_lb_worker.c7 Dec 2004 12:24:53 -   1.33
  +++ jk_lb_worker.c7 Dec 2004 13:23:14 -   1.34
  @@ -343,8 +343,7 @@
   {
   worker_record_t *rc = NULL;
   char *sessionid = NULL;
  -int total_factor = 0;
  -int domain_id =-1;
  +int domain_id = -1;
   
   JK_TRACE_ENTER(l);
   if (p-sticky_session) {
  
  
  
  1.34  +3 -3  
jakarta-tomcat-connectors/jk/native/common/jk_uri_worker_map.c
  
  Index: jk_uri_worker_map.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_uri_worker_map.c,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- jk_uri_worker_map.c   30 Nov 2004 07:30:42 -  1.33
  +++ jk_uri_worker_map.c   7 Dec 2004 13:23:14 -   1.34
  @@ -295,7 +295,7 @@
   if (uri[0] == '/') {
   char *asterisk = strchr(uri, '*');
   
  -if (asterisk  strchr(asterisk + 1, '*') ||
  +if ((asterisk  strchr(asterisk + 1, '*')) ||
   strchr(uri, '?')) {
   uwr-uri = jk_pool_strdup(uw_map-p, uri);
   
  @@ -548,7 +548,7 @@
   char *uri, jk_logger_t *l)
   {
   unsigned int i;
  -unsigned int best_match = -1;
  +int best_match = -1;
   unsigned int longest_match = 0;
   char *url_rewrite;
   
  
  
  
  1.46  +2 -3  jakarta-tomcat-connectors/jk/native/common/jk_util.c
  
  Index: jk_util.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_util.c,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- jk_util.c 7 Dec 2004 12:24:53 -   1.45
  +++ jk_util.c 7 Dec 2004 13:23:14 -   1.46
  @@ -1036,8 +1036,7 @@
   pthread_getunique_np(t, tid);  

return ((int)(tid.intId.lo  0x));

   #else

  -int tid = 0;

  -pthread_getunique_np(t, tid);  

  +int tid = (int)(t  0x);

   return tid;

   #endif /* AS400 */

   }

  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2004-12-07 Thread mturk
mturk   2004/12/07 06:29:14

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Use static for local functions
  
  Revision  ChangesPath
  1.35  +5 -5  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- jk_lb_worker.c7 Dec 2004 13:23:14 -   1.34
  +++ jk_lb_worker.c7 Dec 2004 14:29:14 -   1.35
  @@ -212,10 +212,10 @@
   }
   
   
  -int is_worker_candidate(worker_record_t *wr,
  -int search_id,
  -const char *search_string,
  -jk_logger_t *l)
  +static int is_worker_candidate(worker_record_t *wr,
  +   int search_id,
  +   const char *search_string,
  +   jk_logger_t *l)
   {
   switch (search_id) {
   case 1:
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2004-11-19 Thread mturk
mturk   2004/11/19 07:30:44

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Added configurable WAIT_BEFORE_RECOVER param.
  The new directive is named recover_time and can be customized
  inside workers.properies.
  
  Revision  ChangesPath
  1.31  +15 -4 jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- jk_lb_worker.c19 Nov 2004 12:58:18 -  1.30
  +++ jk_lb_worker.c19 Nov 2004 15:30:44 -  1.31
  @@ -38,7 +38,7 @@
* Time to wait before retry...
*/
   #define WAIT_BEFORE_RECOVER (60*1)
  -#define ADDITINAL_WAIT_LOAD (20)
  +#define WORKER_RECOVER_TIME (recover_time)
   
   /** 
* Worker record should be inside shared
  @@ -72,7 +72,9 @@
   int in_local_worker_mode;
   int local_worker_only;
   int sticky_session;
  +int recover_wait_time;
   };
  +
   typedef struct lb_worker lb_worker_t;
   
   struct lb_endpoint
  @@ -244,7 +246,7 @@
   if (!p-lb_workers[i].in_recovering) {
   time_t now = time(0);
   if ((now - p-lb_workers[i].error_time) 
  -WAIT_BEFORE_RECOVER) {
  +p-recover_wait_time) {
   p-lb_workers[i].in_recovering = JK_TRUE;
   p-lb_workers[i].error_time = now;
   rc = (p-lb_workers[i]);
  @@ -495,10 +497,19 @@
 jk_map_t *props,
 jk_worker_env_t *we, jk_logger_t *log)
   {
  +int i;
   
   lb_worker_t *p = (lb_worker_t *)pThis-worker_private;
   pThis-retries = jk_get_worker_retries(props, p-name,
  JK_RETRIES);
  +
  +if (jk_get_worker_int_prop(props, p-name,
  +   WORKER_RECOVER_TIME,
  +   i))
  +p-recover_wait_time = i;
  +if (p-recover_wait_time  WAIT_BEFORE_RECOVER)
  +p-recover_wait_time = WAIT_BEFORE_RECOVER;
  +
   return JK_TRUE;
   }
   
  @@ -571,7 +582,7 @@
   private_data-worker.get_endpoint = get_endpoint;
   private_data-worker.destroy = destroy;
   private_data-worker.retries = JK_RETRIES;
  -
  +private_data-recover_wait_time = WAIT_BEFORE_RECOVER;
   *w = private_data-worker;
   JK_TRACE_EXIT(l);
   return JK_TRUE;
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_msg_buff.c jk_msg_buff.h jk_uri_worker_map.c jk_worker.c

2004-11-11 Thread mturk
mturk   2004/11/11 01:45:23

  Modified:jk/native/common jk_lb_worker.c jk_msg_buff.c jk_msg_buff.h
jk_uri_worker_map.c jk_worker.c
  Log:
  Clean up log messages.
  
  Revision  ChangesPath
  1.28  +4 -4  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- jk_lb_worker.c10 Nov 2004 16:36:48 -  1.27
  +++ jk_lb_worker.c11 Nov 2004 09:45:23 -  1.28
  @@ -290,7 +290,7 @@
   jk_b_reset(s-reco_buf);
   s-reco_status = RECO_INITED;
   jk_log(l, JK_LOG_DEBUG,
  -   __FUNCTION__ ::service sticky_session=%d\n,
  +   service sticky_session=%d\n,
  p-worker-sticky_session);
   
   while (1) {
  @@ -306,7 +306,7 @@
   rc = rec-w-get_endpoint(rec-w, end, l);
   
   jk_log(l, JK_LOG_DEBUG,
  -   __FUNCTION__ ::service worker=%s jvm_route=%s 
rc=%d\n,
  +   service worker=%s jvm_route=%s rc=%d\n,
  rec-name, s-jvm_route, rc);
   
   if (rc  end) {
  @@ -345,7 +345,7 @@
* another worker... Lets try to do that.
*/
   jk_log(l, JK_LOG_DEBUG,
  -   __FUNCTION__ ::recoverable error... will try to 
recover on other host\n);
  +   recoverable error... will try to recover on other 
host\n);
   }
   else {
   /* NULL record, no more workers left ... */
  
  
  
  1.20  +5 -4  jakarta-tomcat-connectors/jk/native/common/jk_msg_buff.c
  
  Index: jk_msg_buff.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_msg_buff.c,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- jk_msg_buff.c 10 Nov 2004 16:28:31 -  1.19
  +++ jk_msg_buff.c 11 Nov 2004 09:45:23 -  1.20
  @@ -385,13 +385,14 @@
*/
   void jk_dump_buff(jk_logger_t *l,
 const char *file,
  -  int line, int level, char *what, jk_msg_buf_t *msg)
  +  int line, const char *funcname,
  +  int level, char *what, jk_msg_buf_t *msg)
   {
   #ifdef USE_ALSO_BODY
  -jk_log(l, file, line, level, %s #%d %.*s\n,
  +jk_log(l, file, line, funcname, level, %s #%d %.*s\n,
  what, jk_b_get_len(msg), jk_b_get_len(msg), jk_b_get_buff(msg));
   #else
  -jk_log(l, file, line, level, %s #%d\n, what, jk_b_get_len(msg));
  +jk_log(l, file, line, funcname, level, %s #%d\n, what, 
jk_b_get_len(msg));
   #endif
   }
   
  
  
  
  1.13  +3 -2  jakarta-tomcat-connectors/jk/native/common/jk_msg_buff.h
  
  Index: jk_msg_buff.h
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_msg_buff.h,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- jk_msg_buff.h 8 Nov 2004 13:32:21 -   1.12
  +++ jk_msg_buff.h 11 Nov 2004 09:45:23 -  1.13
  @@ -157,7 +157,8 @@
   /* - Help  */
   void jk_dump_buff(jk_logger_t *l,
 const char *file,
  -  int line, int level, char *what, jk_msg_buf_t *msg);
  +  int line, const char *funcname,
  +  int level, char *what, jk_msg_buf_t *msg);
   
   /** Copy a msg buf into another one
 */
  
  
  
  1.27  +22 -40
jakarta-tomcat-connectors/jk/native/common/jk_uri_worker_map.c
  
  Index: jk_uri_worker_map.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_uri_worker_map.c,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- jk_uri_worker_map.c   10 Nov 2004 16:36:48 -  1.26
  +++ jk_uri_worker_map.c   11 Nov 2004 09:45:23 -  1.27
  @@ -142,8 +142,7 @@
  init_data, l);
   }
   
  -jk_log(l, JK_LOG_ERROR,
  -   __FUNCTION__ ::uri_worker_map_alloc, NULL parameters\n);
  +JK_LOG_NULL_PARAMS(l);
   
   return JK_FALSE;
   }
  @@ -160,8 +159,7 @@
   return JK_TRUE;
   }
   else
  -jk_log(l, JK_LOG_ERROR,
  -   __FUNCTION__ ::uri_worker_map_free, NULL parameters\n);
  +JK_LOG_NULL_PARAMS(l);
   
   return JK_FALSE;
   }
  @@ -215,7 +213,7 @@
   
   if (!uwr) {
   jk_log(l, JK_LOG_ERROR,
  -   jk_uri_worker_map_t::uri_worker_map_add, can't alloc map 

cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2004-11-11 Thread mturk
mturk   2004/11/11 10:43:07

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Add new trace macros and clean up some log messages.
  
  Revision  ChangesPath
  1.29  +12 -5 jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- jk_lb_worker.c11 Nov 2004 09:45:23 -  1.28
  +++ jk_lb_worker.c11 Nov 2004 18:43:07 -  1.29
  @@ -337,7 +337,8 @@
*/
   jk_log(l, JK_LOG_ERROR,
  lb: unrecoverable error, request failed. Tomcat 
failed in the middle of request, we can't recover to another instance.\n);
  -break;
  +JK_TRACE_EXIT(l);
  +return JK_FALSE;
   }
   
   /* 
  @@ -351,13 +352,14 @@
   /* NULL record, no more workers left ... */
   jk_log(l, JK_LOG_ERROR,
  lb: All tomcat instances failed, no more workers 
left.\n);
  +JK_TRACE_EXIT(l);
   return JK_FALSE;
  -break;
   }
   }
   }
   
   jk_log(l, JK_LOG_ERROR, lb: end of service with error\n);
  +JK_TRACE_EXIT(l);
   return JK_FALSE;
   }
   
  @@ -379,7 +381,7 @@
   }
   
   JK_LOG_NULL_PARAMS(l);
  -
  +JK_TRACE_EXIT(l);
   return JK_FALSE;
   }
   
  @@ -409,6 +411,7 @@
 sizeof(worker_record_t));
   
   if (!p-lb_workers) {
  +JK_TRACE_EXIT(l);
   return JK_FALSE;
   }
   
  @@ -460,7 +463,7 @@
   if (i != num_of_workers) {
   close_workers(p, i, l);
   jk_log(l, JK_LOG_DEBUG,
  -   In jk_worker_t::validate: Failed to create worker 
%s\n,
  +   Failed to create worker %s\n,
  p-lb_workers[i].name);
   
   }
  @@ -484,6 +487,7 @@
   }
   
   JK_LOG_NULL_PARAMS(l);
  +JK_TRACE_EXIT(l);
   return JK_FALSE;
   }
   
  @@ -516,6 +520,7 @@
   JK_LOG_NULL_PARAMS(l);
   }
   
  +JK_TRACE_EXIT(l);
   return JK_FALSE;
   }
   
  @@ -536,6 +541,7 @@
   }
   
   JK_LOG_NULL_PARAMS(l);
  +JK_TRACE_EXIT(l);
   return JK_FALSE;
   }
   
  @@ -570,5 +576,6 @@
   JK_LOG_NULL_PARAMS(l);
   }
   
  +JK_TRACE_EXIT(l);
   return JK_FALSE;
   }
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2004-11-08 Thread mturk
mturk   2004/11/08 05:42:23

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Backport load balancer algorithm from proxy_balancer.
  Use integer balancer factors instead double.
  This algorithim is much fatster and it actually behaves like
  it should.
  
  Revision  ChangesPath
  1.25  +21 -41jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- jk_lb_worker.c8 Oct 2004 07:50:39 -   1.24
  +++ jk_lb_worker.c8 Nov 2004 13:42:23 -   1.25
  @@ -18,8 +18,9 @@
* Description: Load balancer worker, knows how to load balance among  *
*  several workers.   *
* Author:  Gal Shachor [EMAIL PROTECTED]   *
  + * Author:  Mladen Turk [EMAIL PROTECTED] *
* Based on:   *
  - * Version: $Revision$   *
  + * Version: $Revision$  *
***/
   
   #include jk_pool.h
  @@ -39,11 +40,17 @@
   #define WAIT_BEFORE_RECOVER (60*1)
   #define ADDITINAL_WAIT_LOAD (20)
   
  +/** 
  + * Worker record should be inside shared
  + * memory for correct behavior.
  + * Right now it operates on 'equal-load'
  + * presumption.
  + */
   struct worker_record
   {
   char *name;
  -double lb_factor;
  -double lb_value;
  +int lb_factor;
  +int lb_value;
   int is_local_worker;
   int in_error_state;
   int in_recovering;
  @@ -98,7 +105,7 @@
* to be on the safe side lets remove the trailing query 
* string if appended...
*/
  -if (id_end = strchr(id_start, '?')) {
  +if ((id_end = strchr(id_start, '?')) != NULL) {
   *id_end = '\0';
   }
   /*
  @@ -189,31 +196,14 @@
   }
   }
   
  -static double get_max_lb(lb_worker_t * p)
  -{
  -unsigned i;
  -double rc = 0.0;
  -
  -for (i = 0; i  p-num_of_workers; i++) {
  -if (!p-lb_workers[i].in_error_state) {
  -if (p-lb_workers[i].lb_value  rc) {
  -rc = p-lb_workers[i].lb_value;
  -}
  -}
  -}
  -
  -return rc;
  -
  -}
  -
   static worker_record_t *get_most_suitable_worker(lb_worker_t * p,
jk_ws_service_t *s,
int attempt)
   {
   worker_record_t *rc = NULL;
  -double lb_min = 0.0;
   unsigned i;
   char *sessionid = NULL;
  +int total_factor = 0;
   
   if (p-sticky_session) {
   sessionid = get_sessionid(s);
  @@ -264,20 +254,19 @@
   }
   }
   else {
  -if (p-lb_workers[i].lb_value  lb_min || !rc) {
  -lb_min = p-lb_workers[i].lb_value;
  +p-lb_workers[i].lb_value += p-lb_workers[i].lb_factor;
  +total_factor += p-lb_workers[i].lb_factor;
  +if (!rc || p-lb_workers[i].lb_value  rc-lb_value)
   rc = (p-lb_workers[i]);
  -if (rc-is_local_worker)
  -break;
  -}
   }
   }
   }
   
  -if (rc  !rc-is_local_worker) {
  -rc-lb_value += rc-lb_factor;
  +if (rc) {
  +rc-lb_value -= total_factor;
   }
   
  +
   return rc;
   }
   
  @@ -316,7 +305,7 @@
   
   rc = rec-w-get_endpoint(rec-w, end, l);
   
  -jk_log(l, JK_LOG_DEBUG,
  +jk_log(l, JK_LOG_INFO,
  Into jk_endpoint_t::service worker=%s jvm_route=%s 
rc=%d\n,
  rec-name, s-jvm_route, rc);
   
  @@ -324,10 +313,6 @@
   int src = end-service(end, s, l, is_recoverable);
   end-done(end, l);
   if (src) {
  -if (rec-in_recovering  rec-lb_value != 0) {
  -rec-lb_value =
  -get_max_lb(p-worker) + ADDITINAL_WAIT_LOAD;
  -}
   rec-in_error_state = JK_FALSE;
   rec-in_recovering = JK_FALSE;
   rec-error_time = 0;
  @@ -431,13 +416,8 @@
   jk_pool_strdup(p-p, worker_names[i]);
   p-lb_workers[i].lb_factor =
   jk_get_lb_factor(props, worker_names[i]);
  -

cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2004-07-28 Thread billbarker
billbarker2004/07/27 22:59:44

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Check all JSESSIONID cookies for a valid jvmRoute.
  
  If you have multiple Tomcats with overlapping domains, then you can get multiple 
cookies without a defined order.  This will route correctly as long as the different 
domains don't have any Tomcats in common.
  
  Based on patch
  Submitted By: Sandy McArthur [EMAIL PROTECTED]
  
  Revision  ChangesPath
  1.23  +42 -39jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- jk_lb_worker.c21 Jul 2004 02:18:46 -  1.22
  +++ jk_lb_worker.c28 Jul 2004 05:59:44 -  1.23
  @@ -100,6 +100,12 @@
   if(id_end = strchr(id_start, '?')) { 
   *id_end = '\0';
   }
  +/*
  + * Remove any trailing path element.
  + */
  +if((id_end = strchr(id_start, ';')) != NULL) {
  +*id_end = '\0';
  +}
   return id_start;
   }
   }
  @@ -114,6 +120,7 @@
   const char *name)
   {
   unsigned i;
  +char *result = NULL;
   
   for(i = 0 ; i  s-num_headers ; i++) {
   if(0 == strcasecmp(s-headers_names[i], cookie)) {
  @@ -142,14 +149,22 @@
   if((id_end = strchr(id_start, ',')) != NULL) {
   *id_end = '\0';
   }
  -return id_start;
  +if(result == NULL) {
  +result = id_start;
  +} else {
  +int osz = strlen(result)+1;
  +int sz  = osz + strlen(id_start)+1;
  +result = jk_pool_realloc(s-pool, sz, result, osz);
  +strcat(result,;);
  +strcat(result, id_start);
  +}
   }
   }
   }
   }
   }
   
  -return NULL;
  +return result;
   }
   
   
  @@ -166,29 +181,6 @@
   return val;
   }
   
  -static char *get_session_route(jk_ws_service_t *s)
  -{
  -char *sessionid = get_sessionid(s);
  -char *ch;
  -
  -if(!sessionid) {
  -return NULL;
  -}
  -
  -/*
  - * Balance parameter is appended to the end
  - */  
  -ch = strrchr(sessionid, '.');
  -if(!ch) {
  -return 0;
  -}
  -ch++;
  -if(*ch == '\0') {
  -return NULL;
  -}
  -return ch;
  -}
  -
   static void close_workers(lb_worker_t *p, 
 int num_of_workers,
 jk_logger_t *l)
  @@ -223,26 +215,37 @@
   worker_record_t *rc = NULL;
   double lb_min = 0.0;
   unsigned i;
  -char *session_route = NULL;
  +char *sessionid = NULL;
   
   if (p-sticky_session) {
  -session_route = get_session_route(s);
  +sessionid = get_sessionid(s);
   }
   
  -if(session_route) {
  -for(i = 0 ; i  p-num_of_workers ; i++) {
  +while(sessionid) {
  +char *next = strchr(sessionid, ';');
  +char *session_route;
  +if(next) {
  +*next++ = '\0';
  +}
  +session_route = strchr(sessionid, '.');
  +if(session_route) {
  +  ++session_route;
  +  for(i = 0 ; i  p-num_of_workers ; i++) {
   if(0 == strcmp(session_route, p-lb_workers[i].name)) {
  -/* First attempt will allways be to the
  -   correct host. If this is indeed down and no
  -   hope of recovery, we'll go to fail-over
  -*/
  -if(attempt0  p-lb_workers[i].in_error_state) {
  -   break;
  -} else {
  -return (p-lb_workers[i]);
  -}
  +  /* First attempt will allways be to the
  + correct host. If this is indeed down and no
  + hope of recovery, we'll go to fail-over
  +  */
  +  if(attempt0  p-lb_workers[i].in_error_state) {
  +next = NULL; /* Double break; */
  +break;
  +  } else {
  +return (p-lb_workers[i]);
  +  }
   }
  +  }
   }
  +sessionid = next;
   }
   
   for(i = 0 ; i  p-num_of_workers ; i++) {
  
  
  

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



Re: cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2004-07-28 Thread Henri Gomez
[EMAIL PROTECTED] wrote:
billbarker2004/07/27 22:59:44
  Modified:jk/native/common jk_lb_worker.c
  Log:
  Check all JSESSIONID cookies for a valid jvmRoute.
  
  If you have multiple Tomcats with overlapping domains, then you can get multiple cookies without a defined order.  This will route correctly as long as the different domains don't have any Tomcats in common.
It seems to be an important fix.
Should we release quickly a jk 1.2.7 ?
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2004-07-20 Thread hgomez
hgomez  2004/07/20 07:56:40

  Modified:jk/native/common jk_lb_worker.c
  Log:
  More debug infos around LB.
  
  Revision  ChangesPath
  1.21  +8 -1  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- jk_lb_worker.c15 Jul 2004 07:04:15 -  1.20
  +++ jk_lb_worker.c20 Jul 2004 14:56:40 -  1.21
  @@ -296,6 +296,9 @@
   jk_b_set_buffer_size(s-reco_buf, DEF_BUFFER_SZ);
   jk_b_reset(s-reco_buf);
   s-reco_status = RECO_INITED;   
 
  +jk_log(l, JK_LOG_DEBUG, Into jk_endpoint_t::service sticky_session=%d\n, 
  +   p-worker-sticky_session);
  +
   while(1) {
   worker_record_t *rec = get_most_suitable_worker(p-worker, s, 
attempt++);
   int rc;
  @@ -306,6 +309,10 @@
   s-jvm_route = jk_pool_strdup(s-pool,  rec-name);
   
   rc = rec-w-get_endpoint(rec-w, end, l);
  +
  +jk_log(l, JK_LOG_DEBUG, Into jk_endpoint_t::service worker=%s 
jvm_route=%s rc=%d\n, 
  +   rec-name, s-jvm_route, rc);
  +
   if(rc  end) {
   int src = end-service(end, s, l, is_recoverable);
   end-done(end, l);
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2004-07-20 Thread billbarker
billbarker2004/07/20 19:18:46

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Fix nasty typo that was killing the cookie.
  
  Reported By: Sandy McArthur [EMAIL PROTECTED]
  
  Revision  ChangesPath
  1.22  +2 -2  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- jk_lb_worker.c20 Jul 2004 14:56:40 -  1.21
  +++ jk_lb_worker.c21 Jul 2004 02:18:46 -  1.22
  @@ -139,7 +139,7 @@
   if((id_end = strchr(id_start, ';')) != NULL) {
   *id_end = '\0';
   }
  -if((id_start = strchr(id_start, ',')) != NULL) {
  +if((id_end = strchr(id_start, ',')) != NULL) {
   *id_end = '\0';
   }
   return id_start;
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2004-07-15 Thread hgomez
hgomez  2004/07/15 00:04:15

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Fix typo
  
  Revision  ChangesPath
  1.20  +2 -2  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- jk_lb_worker.c15 Jul 2004 05:17:17 -  1.19
  +++ jk_lb_worker.c15 Jul 2004 07:04:15 -  1.20
  @@ -125,7 +125,7 @@
   if(id_start == s-headers_values[i] ||
  id_start[-1] == ';' ||
  id_start[-1] == ',' ||
  -   isspace(is_start[-1]) ) {
  +   isspace(id_start[-1]) ) {
   id_start += strlen(name);
   while(*id_start  isspace(*id_start))
   ++id_start;
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2004-07-14 Thread billbarker
billbarker2004/07/14 20:37:01

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Fix the parsing of the Cookie so that PSJSESSIONID doesn't match.
  
  Also make the parsing a bit closer to RFC 2109
  
  Reported By: Sandy McArthur [EMAIL PROTECTED]
  
  Revision  ChangesPath
  1.18  +16 -8 jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- jk_lb_worker.c24 Feb 2004 08:45:46 -  1.17
  +++ jk_lb_worker.c15 Jul 2004 03:37:00 -  1.18
  @@ -122,15 +122,23 @@
   for(id_start = strstr(s-headers_values[i], name) ; 
   id_start ; 
   id_start = strstr(id_start + 1, name)) {
  -if('=' == id_start[strlen(name)]) {
  -/*
  - * Session cookie was found, get it's value
  - */
  -id_start += (1 + strlen(name));
  -if(strlen(id_start)) {
  +if(id_start == s-headers_values[i] ||
  +   id_start[-1] == ';' ||
  +   id_start[-1] == ',' ||
  +   isspace(is_start[-1]) ) {
  +id_start += strlen(name);
  +while(*id_start  !isspace(*id_start))
  +++id_start;
  +if(*id_start == '='  id_start[1]) {
  +/*
  + * Session cookie was found, get it's value
  + */
   char *id_end;
   id_start = jk_pool_strdup(s-pool, id_start);
  -if(id_end = strchr(id_start, ';')) {
  +if((id_end = strchr(id_start, ';')) != NULL) {
  +*id_end = '\0';
  +}
  +if((id_start = strchr(id_start, ',')) != NULL) {
   *id_end = '\0';
   }
   return id_start;
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2004-07-14 Thread billbarker
billbarker2004/07/14 22:17:17

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Fix backwards test, and off-by-one on value.
  
  Revision  ChangesPath
  1.19  +3 -2  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- jk_lb_worker.c15 Jul 2004 03:37:00 -  1.18
  +++ jk_lb_worker.c15 Jul 2004 05:17:17 -  1.19
  @@ -127,13 +127,14 @@
  id_start[-1] == ',' ||
  isspace(is_start[-1]) ) {
   id_start += strlen(name);
  -while(*id_start  !isspace(*id_start))
  +while(*id_start  isspace(*id_start))
   ++id_start;
   if(*id_start == '='  id_start[1]) {
   /*
* Session cookie was found, get it's value
*/
   char *id_end;
  +++id_start;
   id_start = jk_pool_strdup(s-pool, id_start);
   if((id_end = strchr(id_start, ';')) != NULL) {
   *id_end = '\0';
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2004-02-06 Thread hgomez
hgomez  2004/02/06 00:37:59

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Comment end of LB service
  
  Revision  ChangesPath
  1.15  +3 -3  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- jk_lb_worker.c5 Nov 2003 09:15:39 -   1.14
  +++ jk_lb_worker.c6 Feb 2004 08:37:59 -   1.15
  @@ -372,7 +372,7 @@
* another worker... Lets try to do that.
*/
jk_log(l, JK_LOG_DEBUG, 
  -In jk_endpoint_t::service, recoverable error... will try 
to recover on other host\n);
  +lb: recoverable error... will try to recover on other 
host\n);
   } else {
   /* NULL record, no more workers left ... */
jk_log(l, JK_LOG_ERROR, 
  @@ -384,7 +384,7 @@
   }
   
   jk_log(l, JK_LOG_ERROR, 
  -   In jk_endpoint_t::service: NULL Parameters\n);
  +   lb: end of service with error\n);
   
   return JK_FALSE;
   }
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2003-07-15 Thread glenn
glenn   2003/07/15 05:15:42

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Remove unnecessary error mesage when all lb workers fail
  
  Revision  ChangesPath
  1.13  +2 -1  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- jk_lb_worker.c2 Jan 2003 17:12:55 -   1.12
  +++ jk_lb_worker.c15 Jul 2003 12:15:42 -  1.13
  @@ -377,6 +377,7 @@
   /* NULL record, no more workers left ... */
jk_log(l, JK_LOG_ERROR, 
   lb: All tomcat instances failed, no more workers left.\n);
  + return JK_FALSE;
   break;
   }
   }
  
  
  

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



cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c jk_util.c jk_util.h

2002-05-15 Thread costin

costin  02/05/15 14:00:29

  Modified:jk/native build.xml
   jk/native/common jk_lb_worker.c jk_util.c jk_util.h
  Log:
  Patch from  Bernd Koecke, adding better support for hw balancers
  
  Submitted by: Bernd Keocke [EMAIL PROTECTED]
  
  Revision  ChangesPath
  1.33  +4 -1  jakarta-tomcat-connectors/jk/native/build.xml
  
  Index: build.xml
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/build.xml,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- build.xml 7 May 2002 01:43:52 -   1.32
  +++ build.xml 15 May 2002 21:00:29 -  1.33
  @@ -82,7 +82,7 @@
include name=${novellndk.dir}/include if=netware /
   include name=${java.home}/../include/netware if=netware /
   include name=${java.home}/../include/hp-ux if=hpux /
  -include name=${java.home}/../include/linux if=linux /
  +include name=${java.home}/../include/linux  if=linux/
   include name=${java.home}/../include/win32 if=win32 /
 /includes
 depends
  @@ -162,6 +162,7 @@
   include name=${java.home}/../include/win32 if=win32 /
   include name=${java.home}/../include/hp-ux if=hpux /
   include name=${java.home}/../include/netware if=netware /
  +include name=${java.home}/../include/linux  if=linux/
include name=${novelllibc.dir}/include if=netware /
 /includes
 depends
  @@ -223,6 +224,7 @@
 src dir=.
include name=apache-1.3/mod_jk.c /
include name=common/*.c /
  + exclude name=common/jk_jni_worker.c /
   exclude name=common/jk_nwmain.c unless=netware /
   include name=common/apr/*.c unless=HAVE_APR /
 /src
  @@ -365,6 +367,7 @@
   
include name=${novellndk.dir}/include/nlm if=netware /
include name=${novellndk.dir}/include if=netware /
  +include name=${java.home}/../include/linux if=linux /
   include name=${java.home}/../include/netware if=netware /

include name=${apache13.home}/os/win32 if=win32 /
  
  
  
  1.10  +55 -20jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- jk_lb_worker.c3 May 2002 23:32:43 -   1.9
  +++ jk_lb_worker.c15 May 2002 21:00:29 -  1.10
  @@ -60,7 +60,7 @@
*  several workers.   *
* Author:  Gal Shachor [EMAIL PROTECTED]   *
* Based on:   *
  - * Version: $Revision: 1.9 $   *
  + * Version: $Revision: 1.10 $   *
***/
   
   #include jk_pool.h
  @@ -84,6 +84,7 @@
   char*name;
   double  lb_factor;
   double  lb_value;
  +int is_local_worker;
   int in_error_state;
   int in_recovering;
   time_t  error_time;
  @@ -100,6 +101,8 @@
   
   char *name; 
   jk_worker_t worker;
  +int  in_local_worker_mode;
  +int  local_worker_only;
   };
   typedef struct lb_worker lb_worker_t;
   
  @@ -270,28 +273,29 @@
   }
   
   for(i = 0 ; i  p-num_of_workers ; i++) {
  -if(p-lb_workers[i].in_error_state) {
  -if(!p-lb_workers[i].in_recovering) {
  -time_t now = time(0);
  -
  -if((now - p-lb_workers[i].error_time)  WAIT_BEFORE_RECOVER) {
  -
  -p-lb_workers[i].in_recovering  = JK_TRUE;
  -p-lb_workers[i].error_time = now;
  +if (!p-in_local_worker_mode || p-lb_workers[i].is_local_worker || 
!p-local_worker_only) {
  +if(p-lb_workers[i].in_error_state) {
  +if(!p-lb_workers[i].in_recovering) {
  +time_t now = time(0);
  +if((now - p-lb_workers[i].error_time)  WAIT_BEFORE_RECOVER) {
  +p-lb_workers[i].in_recovering  = JK_TRUE;
  +p-lb_workers[i].error_time = now;
  +rc = (p-lb_workers[i]);
  +
  +break;
  +}
  +}
  +} else {
  +if(p-lb_workers[i].lb_value  lb_min || !rc) {
  +lb_min = p-lb_workers[i].lb_value;
   rc = (p-lb_workers[i]);
  -
  -break;
  +if (rc-is_local_worker) break;
   }
 

cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2002-05-03 Thread costin

costin  02/05/03 16:32:43

  Modified:jk/native/common jk_lb_worker.c
  Log:
  Patch from  Bernd Koecke, fixing the 'default worker'.
  
  Note that a '0' value means the worker will get _all_ requests.
  
  Revision  ChangesPath
  1.9   +13 -8 jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- jk_lb_worker.c12 Jan 2002 05:27:39 -  1.8
  +++ jk_lb_worker.c3 May 2002 23:32:43 -   1.9
  @@ -60,7 +60,7 @@
*  several workers.   *
* Author:  Gal Shachor [EMAIL PROTECTED]   *
* Based on:   *
  - * Version: $Revision: 1.8 $   *
  + * Version: $Revision: 1.9 $   *
***/
   
   #include jk_pool.h
  @@ -291,7 +291,7 @@
   }
   }
   
  -if(rc) {
  +if(rc  rc-lb_value != 0 ) {
   rc-lb_value += rc-lb_factor;
   }
   
  @@ -328,8 +328,8 @@
   if(rc  end) {
   int src = end-service(end, s, l, is_recoverable);
   end-done(end, l);
  -if(src) {
  -if(rec-in_recovering) {
  +if(src ) {
  +if(rec-in_recovering  rec-lb_value != 0) {
   rec-lb_value = get_max_lb(p-worker) + 
ADDITINAL_WAIT_LOAD;
   }
   rec-in_error_state = JK_FALSE;
  @@ -433,12 +433,17 @@
   p-lb_workers[i].name = jk_pool_strdup(p-p, worker_names[i]);
   p-lb_workers[i].lb_factor = jk_get_lb_factor(props, 
  worker_names[i]);
  -p-lb_workers[i].lb_factor = 1/p-lb_workers[i].lb_factor;
  +if(p-lb_workers[i].lb_factor  0) {
  +p-lb_workers[i].lb_factor = -1 * p-lb_workers[i].lb_factor;
  +}
  +if (0  p-lb_workers[i].lb_factor) {
  +p-lb_workers[i].lb_factor = 1/p-lb_workers[i].lb_factor;
  +}
  +
   /* 
* Allow using lb in fault-tolerant mode.
  - * Just set lbfactor in worker.properties to 0 to have 
  - * a worker used only when principal is down or session route
  - * point to it. Provided by Paul Frieden [EMAIL PROTECTED]
  + * A value of 0 means the worker will be used for all requests 
without
  + * sessions
*/
   p-lb_workers[i].lb_value = p-lb_workers[i].lb_factor;
   p-lb_workers[i].in_error_state = JK_FALSE;
  
  
  

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




cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2002-01-11 Thread costin

costin  02/01/11 21:27:39

  Modified:jk/native build.xml
   jk/native/common jk_lb_worker.c
  Log:
  Few changes to make it build on hpux.
  
  A small fix in lb worker - try once more to connect to the host
  where the session is located before giving up. This should solve
  a lb bug which may happen in some cases.
  
  Revision  ChangesPath
  1.27  +9 -1  jakarta-tomcat-connectors/jk/native/build.xml
  
  Index: build.xml
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/build.xml,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- build.xml 4 Jan 2002 05:13:31 -   1.26
  +++ build.xml 12 Jan 2002 05:27:39 -  1.27
  @@ -80,7 +80,8 @@
include name=${novellndk.dir}/include/nlm if=netware /
include name=${novellndk.dir}/include if=netware /
   include name=${java.home}/../include/netware if=netware /
  -
  +include name=${java.home}/../include/hp-ux if=hpux /
  +include name=${java.home}/../include/linux if=linux /
   include name=${java.home}/../include/win32 if=win32 /
 /includes
 depends
  @@ -109,6 +110,8 @@
 linkOpt value=-threadname quot;JK_JNI Threadquot; if=netware /
 linkOpt value=-stacksize 64000 if=netware /
 
  +  def name=HPUX11 if=hpux /
  +
 def name=WIN32 if=win32 /
 def name=DEBUG if=win32.debug  /
 def name=NDEBUG if=win32.release  /
  @@ -140,6 +143,7 @@
   info=Reuse the worker endpoint, using per thread data /
 def name=USE_APACHE_MD5 
   info=Use the MD5 implementation that is part of apache2 /
  +  def name=HPUX11 if=hpux /
 apacheConfig apxs=${apxs20} /
 jniConfig /
 src dir=.
  @@ -153,6 +157,7 @@
include name=${apache2.include} /
include name=${java.home}/../include /
include name=${java.home}/../include/win32 if=win32 /
  +include name=${java.home}/../include/hp-ux if=hpux /
 /includes
 depends
fileset dir=${native.dir}/common includes=*.h /
  @@ -207,6 +212,7 @@

include name=${apache13.home}/os/win32 if=win32 /
   include name=${java.home}/../include/win32 if=win32 /
  +include name=${java.home}/../include/hp-ux if=hpux /
   include name=${native.dir}/common if=win32 /
 /includes
 depends
  @@ -223,6 +229,8 @@
 def name=USE_SPRINTF if=netware
   info=Use the sprintf function to build strings /
  
  +  def name=HPUX11 if=hpux /
  +
 def name=WIN32 if=win32 /
 def name=DEBUG if=win32.debug  /
 def name=NDEBUG if=win32.release  /
  
  
  
  1.8   +10 -5 jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- jk_lb_worker.c4 Dec 2001 19:44:23 -   1.7
  +++ jk_lb_worker.c12 Jan 2002 05:27:39 -  1.8
  @@ -60,7 +60,7 @@
*  several workers.   *
* Author:  Gal Shachor [EMAIL PROTECTED]   *
* Based on:   *
  - * Version: $Revision: 1.7 $   *
  + * Version: $Revision: 1.8 $   *
***/
   
   #include jk_pool.h
  @@ -246,7 +246,7 @@
   }
   
   static worker_record_t *get_most_suitable_worker(lb_worker_t *p, 
  - jk_ws_service_t *s)
  + jk_ws_service_t *s, int attempt)
   {
   worker_record_t *rc = NULL;
   double lb_min = 0.0;
  @@ -256,7 +256,11 @@
   if(session_route) {
   for(i = 0 ; i  p-num_of_workers ; i++) {
   if(0 == strcmp(session_route, p-lb_workers[i].name)) {
  -if(p-lb_workers[i].in_error_state) {
  +/* First attempt will allways be to the
  +   correct host. If this is indeed down and no
  +   hope of recovery, we'll go to fail-over
  +*/
  +if(attempt0  p-lb_workers[i].in_error_state) {
  break;
   } else {
   return (p-lb_workers[i]);
  @@ -305,13 +309,14 @@
   if(e  e-endpoint_private  s  is_recoverable_error) {
   lb_endpoint_t *p = e-endpoint_private;
   jk_endpoint_t *end = NULL;
  +int attempt=0;
   
   /* you can not recover on 

cvs commit: jakarta-tomcat-connectors/jk/native/common jk_lb_worker.c

2001-06-18 Thread hgomez

hgomez  01/06/18 01:32:22

  Modified:jk/native/common jk_lb_worker.c
  Log:
  This patch changes the behavior by pre-initializing lb_value for each
  worker.  The selection algorithm searches for the worker with the lowest
  lb_value that is not in a failed state.  It then increments the lb_value
  by the lb_factor.  lb_factor is set to the inverse (1/x) of the
  lb_factor specified in the config file.  When lb_factor in the config
  file is 0, this number becomes basically MAX_DOUBLE.  That means that
  lb_value becomes MAX_DOUBLE, so it will never be selected for any
  practical purposes.
  Obtained from: Paul Frieden [EMAIL PROTECTED]
  
  Revision  ChangesPath
  1.3   +8 -2  jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c
  
  Index: jk_lb_worker.c
  ===
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_lb_worker.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- jk_lb_worker.c2001/06/12 06:26:25 1.2
  +++ jk_lb_worker.c2001/06/18 08:32:18 1.3
  @@ -58,7 +58,7 @@
*  several workers.   *
* Author:  Gal Shachor [EMAIL PROTECTED]   *
* Based on:   *
  - * Version: $Revision: 1.2 $   *
  + * Version: $Revision: 1.3 $   *
***/
   
   #include jk_pool.h
  @@ -427,7 +427,13 @@
   p-lb_workers[i].lb_factor = jk_get_lb_factor(props, 
  worker_names[i]);
   p-lb_workers[i].lb_factor = 1/p-lb_workers[i].lb_factor;
  -p-lb_workers[i].lb_value = 0.0;
  +/* 
  + * Allow using lb in fault-tolerant mode.
  + * Just set lbfactor in worker.properties to 0 to have 
  + * a worker used only when principal is down or session route
  + * point to it. Provided by Paul Frieden [EMAIL PROTECTED]
  + */
  +p-lb_workers[i].lb_value = p-lb_workers[i].lb_factor;
   p-lb_workers[i].in_error_state = JK_FALSE;
   p-lb_workers[i].in_recovering  = JK_FALSE;
   if(!wc_create_worker(p-lb_workers[i].name,