Hi,
Le 12/08/2018 à 08:41, Sachin Shetty a écrit :
Hi Cyril,
Any idea how I can deterministically set the readtimeout as well?
Well, currently I can't reproduce this at all. Can you provide some more
details ? or even a full configuration providing the test case ?
From the tests I've made, read and write timeouts work as expected.
Thanks
Sachin
On Fri, Jul 27, 2018 at 1:23 PM, Sachin Shetty <sshe...@egnyte.com
<mailto:sshe...@egnyte.com>> wrote:
Thankyou Cyril, your patch fixed the connect issue.
Read timeout still seems a bit weird though, at settimeout(1),
readtimeout kicks in at about 4 seconds, and at settimeout(2),
readtimeout kicks in at about 8 seconds.
is that expected? I couldn't find read timeout explicitly set
anywhere in the same source file.
Thanks
Sachin
On Fri, Jul 27, 2018 at 5:18 AM, Cyril Bonté <cyril.bo...@free.fr
<mailto:cyril.bo...@free.fr>> wrote:
Hi,
Le 26/07/2018 à 19:54, Sachin Shetty a écrit :
Hi,
We are using a http-req lua action to dynamically set some
app specific metadata headers. The lua handler connects to a
upstream memcache like service over tcp to fetch additional
metadata.
Functionally everything works ok, but I am seeing that
socket.settimeout has no effect. Irrespective of what I set
in settimeout if the upstream service is unreachable,
connect always timesout at 5 seconds, and read timeout
around 10 seconds. It seems like settimeout has no effect
and it always picks defaults of 5 seconds for connect
timeout and 10 seconds for read timeout.
For the connect timeout, it seems this is a hardcoded default
value in src/hlua.c:
socket_proxy.timeout.connect = 5000; /* By default the
timeout connection is 5s. */
If it's possible, can you try the patch attached (for the 1.7.x
branch) ? But please don't use it in production yet ;-)
Haproxy conf call:
http-request lua.get_proxy
Lua code sample:
function get_proxy(txn)
local sock = core.tcp()
sock:settimeout(2)
status, error = sock:connect(gds_host, gds_port)
if not status then
core.Alert("1 Error in connecting:" .. key .. ":"
.. error)
return result, "Error: " .. error
end
sock:send(key .. "\r\n")
....
....
core.register_action("get_proxy", { "http-req" }, get_proxy)
Haproxy version:
HA-Proxy version 1.7.8 2017/07/07
Copyright 2000-2017 Willy Tarreau <wi...@haproxy.org
<mailto:wi...@haproxy.org> <mailto:wi...@haproxy.org
<mailto:wi...@haproxy.org>>>
Build options :
TARGET = linux2628
CPU = generic
CC = gcc
CFLAGS = -O2 -g -fno-strict-aliasing
-Wdeclaration-after-statement -fwrapv -DTCP_USER_TIMEOUT=18
OPTIONS = USE_LINUX_TPROXY=1 USE_ZLIB=1 USE_REGPARM=1
USE_OPENSSL=1 USE_LUA=1 USE_PCRE=1
Default settings :
maxconn = 2000, bufsize = 16384, maxrewrite = 1024,
maxpollevents = 200
Encrypted password support via crypt(3): yes
Built with zlib version : 1.2.7
Running on zlib version : 1.2.7
Compression algorithms supported : identity("identity"),
deflate("deflate"), raw-deflate("deflate"), gzip("gzip")
Built with OpenSSL version : OpenSSL 1.0.1e-fips 11 Feb 2013
Running on OpenSSL version : OpenSSL 1.0.1e-fips 11 Feb 2013
OpenSSL library supports TLS extensions : yes
OpenSSL library supports SNI : yes
OpenSSL library supports prefer-server-ciphers : yes
Built with PCRE version : 8.32 2012-11-30
Running on PCRE version : 8.32 2012-11-30
PCRE library supports JIT : no (USE_PCRE_JIT not set)
Built with Lua version : Lua 5.3.2
Built with transparent proxy support using: IP_TRANSPARENT
IPV6_TRANSPARENT IP_FREEBIND
Available polling systems :
epoll : pref=300, test result OK
poll : pref=200, test result OK
select : pref=150, test result OK
Total: 3 (3 usable), will use epoll.
Available filters :
[COMP] compression
[TRACE] trace
[SPOE] spoe
Thanks
Sachin
--
Cyril Bonté
--
Cyril Bonté