Hello,

The patch works great. I tested on 1.8 and 1.7 and both are working good
now.

Thanks a lot!


On 10.11.2017 18:20, Willy Tarreau wrote:
> Hello Nick,
>
> On Fri, Nov 10, 2017 at 04:50:37PM +0200, Nick Dimov wrote:
>> Hello, everyone.
>>
>> I am encountering a problem with LUA in haproxy, I also reported it here
>> https://github.com/sflow/haproxy/issues/2 but the problem is lieke this:
>>
>> When using a response action, this function - sleeps for 10 seconds, no
>> matter what param i pass to it. Also it seems that the wait time always
>> equals timeout connect. The sample config is:
>>
>>     global
>>     daemon
>>     log /dev/log local6
>>     lua-load /etc/haproxy/delay.lua
>>
>>     defaults
>>     mode http
>>     timeout connect 10000ms
>>
>>     frontend fe
>>     bind *:80
>>     mode http
>>     default_backend b_http_hosts
>>
>>     backend b_http_hosts
>>     mode http
>>     http-response lua.delay_response
>>     server s_web1 server:80 check
>>
>> and the LUA code:
>>
>>     function delay_response(txn)
>>     core.msleep(1)
>>     end
>>
>>     core.register_action("delay_response", {"tcp-res", "http-res" },
>>     delay_response);
>>
>> Note that if core.msleep() is commented out - everything works as expected.
>>
>> I tested version 1.6 (it hangs 30 seconds there), 1.7 - matches timeout
>> connect, and 1.8 - same as 1.7.
>>
>> Any idea how to overcome this problem? All i need is to delay the
>> responses based on information from backend header.
> I've checked and in fact it's been like this forever, it's just that Lua
> uncovered it :-)  Basically the response analyse timeout was never handled
> in process_stream().
>
> I've just fixed it upstream now and verified that your example above
> correctly pauses for delays smaller than the connect timeout.
>
> You can apply the attached patch, it should work on 1.7 as well.
>
> Thanks for reporting this!
> Willy


Reply via email to