On 03/26/2012 11:46 PM, Rainer Jung wrote:
Hi Mladen,for (i = 0; i< p->num_of_workers; i++) { lb_sub_worker_t *w =&p->lb_workers[i]; - if (w->sequence != w->s->h.sequence) { + if (w->sequence< w->s->h.sequence) {I think this one is wrong. It is inside push not pull, so it should be if (local > shared) and not "<".
... continue from first mail Inside lb_worker::init we have 1787: p->sequence++; 1788: jk_lb_push(p, JK_TRUE, log); Now, this is completely wrong. It will always set sequence to 1, so in case worker process gets recycled we have things out of sync. Anyhow why push at init stage? ... next inside lb_push we have 393: p->s->h.sequence = p->sequence; Now this should actually be p->s->h.sequence++; The shm sequence can be generations ahead of heap sequence number. Anyhow, like said, *->s->h.sequence should be updated only when someone explicitly clicks on the jkstatus page. Other then that I see no reason for its update. All other runtime params are intrinsic and volatile should guarantee its consistency. Regards -- ^TM --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
