summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordormando <dormando@rydia.net>2023-03-21 12:09:51 -0700
committerdormando <dormando@rydia.net>2023-03-21 12:09:51 -0700
commit55cda5ce93234935fce88437083b99333d8a23dc (patch)
tree6d07d4bb1bc46f7aaeab6eedcf2eff87f8d9bb72
parent9b3c946f485309cdf50f7fb1622707b5373e33f3 (diff)
downloadmemcached-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.c4
-rw-r--r--t/proxyconfig.t2
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) {