diff options
author | dormando <dormando@rydia.net> | 2023-03-21 12:09:51 -0700 |
---|---|---|
committer | dormando <dormando@rydia.net> | 2023-03-21 12:09:51 -0700 |
commit | 55cda5ce93234935fce88437083b99333d8a23dc (patch) | |
tree | 6d07d4bb1bc46f7aaeab6eedcf2eff87f8d9bb72 | |
parent | 9b3c946f485309cdf50f7fb1622707b5373e33f3 (diff) | |
download | memcached-55cda5ce93234935fce88437083b99333d8a23dc.tar.gz |
proxy: add conntimeout error
use a specific error when timeouts happen during connection stage vs
read/write stage. it even had a test!
-rw-r--r-- | proxy_network.c | 4 | ||||
-rw-r--r-- | t/proxyconfig.t | 2 |
2 files changed, 4 insertions, 2 deletions
diff --git a/proxy_network.c b/proxy_network.c index b25902d..189b6aa 100644 --- a/proxy_network.c +++ b/proxy_network.c @@ -7,6 +7,7 @@ enum proxy_be_failures { P_BE_FAIL_TIMEOUT = 0, P_BE_FAIL_DISCONNECTED, P_BE_FAIL_CONNECTING, + P_BE_FAIL_CONNTIMEOUT, P_BE_FAIL_READVALIDATE, P_BE_FAIL_BADVALIDATE, P_BE_FAIL_WRITING, @@ -23,6 +24,7 @@ const char *proxy_be_failure_text[] = { [P_BE_FAIL_TIMEOUT] = "timeout", [P_BE_FAIL_DISCONNECTED] = "disconnected", [P_BE_FAIL_CONNECTING] = "connecting", + [P_BE_FAIL_CONNTIMEOUT] = "conntimeout", [P_BE_FAIL_READVALIDATE] = "readvalidate", [P_BE_FAIL_BADVALIDATE] = "badvalidate", [P_BE_FAIL_WRITING] = "writing", @@ -1432,7 +1434,7 @@ static void proxy_beconn_handler(const int fd, const short which, void *arg) { if (which & EV_TIMEOUT) { P_DEBUG("%s: backend timed out while connecting\n", __func__); - _reset_bad_backend(be, P_BE_FAIL_TIMEOUT); + _reset_bad_backend(be, P_BE_FAIL_CONNTIMEOUT); _backend_failed(be); return; } diff --git a/t/proxyconfig.t b/t/proxyconfig.t index 233c592..8c9332c 100644 --- a/t/proxyconfig.t +++ b/t/proxyconfig.t @@ -167,7 +167,7 @@ my @holdbe = (); # avoid having the backends immediately disconnect and pollute # host, and port arguments. is(scalar @readable, 3, "all listeners became readable"); - like(<$watcher>, qr/ts=(\S+) gid=\d+ type=proxy_backend error=timeout name=\S+ port=11511/, "one backend timed out connecting"); + like(<$watcher>, qr/ts=(\S+) gid=\d+ type=proxy_backend error=conntimeout name=\S+ port=11511/, "one backend timed out connecting"); like(<$watcher>, qr/ts=(\S+) gid=\d+ type=proxy_backend error=markedbad name=\S+ port=11511/, "backend was marked bad"); for my $msrv (@readable) { |