Hi Costin,

[EMAIL PROTECTED] wrote:
> Hi Bernd,
> 
> First, many thanks for your help :-)
> 
> 

your welcome, its a lot of fun :)

>>No, I think not :). I checked it yesterday. With some additional log statements 
>>in the validate function of jk_lb_worker.c you get the value _inf_ for the 
>>lb_factor and lb_value (line 434-444). Because if it would be set to 1, my 
>>config hadn't worked. Because I set the local worker to 1 and the others to 0.
> 
> 
> I'll check again, and fix it if necesarry.
> 
> I wrote some code in jk2 that seems to solve the problem, and I can
> backport this to jk1 if it is correct.
> 
> Probably this is my mistake - I remember the discussion and the patch
> that was sent for this problem, and most likely I did something
> wrong commiting it ( i.e. I did few changes trying to simplify it, and it
> seems I 'simplified' too much ). But my memory still has the patch's logic
> which seemed fine :-)
> 
> 
>>This is possible, but then you must add a check if the value is 0. Because 
>>without it you calc 1/0 with an int and this will give you an error.
> 
> 
> Yes, of course. 0 will continue to mean 'default worker'.
>

see below

> I'm not very comfortable with float calculations in the critical
> path ( and in an area that is executed concurently !). The only problem
> is what happens on overflows - the lb_value may become 0 ( or a small 
> value ) and then the worker will take all the load. 
> 
> 
> 
>>Thats not the whole story. Its right you will check the main worker when its 
>>back again and use it only once. Because when the request was successful handled 
>>rec->in_recovering is true (line 332 of jk_lb_worker.c, service function). Than 
>>get_max_lb get the value _inf_ from one of the other worker. Than the things 
>>happen which I said in my prior mail.
> 
> 
>>That was it what I did in my sent patch, the additional documentation was sent a 
>>few days later. But my additions to the lb_worker were a little bit to complex. 
>>You are right we should get it when we use the flag only on the main worker and 
>>change the behavior after a failure for this worker. But we need the trick with 
>>0/inf for the other worker, because only with this we have the situation that 
>>the other worker wouldn't be asked when there is no session and the main worker 
>>is up.
> 
> 
> 
> Ok, can you send the patch again :-) ? 
> 
> For going back to the main worker - if we let it with lb_value=0 at all
> time ( i.e. we don't alter that at any time ), and only in_error_state 
> is set on failure - then I believe the thing will work fine.
> 
>

Thats the invers from the actual situation. So my patch from a few hours earlier 
this day depends on the fact that the other worker get a lb_value of 0 in the 
config file. This will be converted to _inf_ and the main worker gets 1 and this 
  will be the minimal lb_value of the balanced workers. If we want the 
possibility to switch to ints I could send a new patch which handles 0 as a 
special value for the main worker.

Should I?

Bernd


> 
>>I will try to build another patch and send it. I think it could be possible 
>>without an additional flag.
> 
> 
> Great !
> 
> 
> 
>>Another tought about this:
>>When you use double and we fix the handling after an error, the main worker 
>>would never reach _inf_. Because the lb_factor is < 1 if lb_value wasn't 0. 
>>After choosing the worker this value is added to the lb_value. But with a high 
>>value for lb_value the differenc between two savable double numbers is greater 
>>than the lb_factor. But this is only interessting in theory. I think in real 
>>world we will reboot apache before this will happen :).
> 
>  
> That may become a problem if we use ints.
> 
> Costin
> 
> 
> 
[...]


-- 
Dipl.-Inform. Bernd Koecke
UNIX-Entwicklung
Schlund+Partner AG
Fon: +49-721-91374-0
E-Mail: [EMAIL PROTECTED]


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

Reply via email to