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é

Reply via email to