summaryrefslogtreecommitdiff
path: root/proxy_await.c
diff options
context:
space:
mode:
authordormando <dormando@rydia.net>2022-09-23 12:30:03 -0700
committerdormando <dormando@rydia.net>2022-09-27 12:38:25 -0700
commit1ba54b05a4a23d1acd85b5c14384ac8cbaed8478 (patch)
tree934fcdaca39a8cc7935c5e204fa6d36e129a0a49 /proxy_await.c
parent725954d3a37ff0596f4a8e53c5746eec3a30166d (diff)
downloadmemcached-1ba54b05a4a23d1acd85b5c14384ac8cbaed8478.tar.gz
proxy: add mcp.await FASTGOOD flag
returns early on a hit, else waits for N non-error responses.
Diffstat (limited to 'proxy_await.c')
-rw-r--r--proxy_await.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/proxy_await.c b/proxy_await.c
index d60f380..8eb5aa6 100644
--- a/proxy_await.c
+++ b/proxy_await.c
@@ -49,6 +49,7 @@ int mcplib_await(lua_State *L) {
case AWAIT_ANY:
case AWAIT_OK:
case AWAIT_FIRST:
+ case AWAIT_FASTGOOD:
break;
default:
proxy_lua_error(L, "invalid type argument tp mcp.await");
@@ -286,6 +287,16 @@ int mcplib_await_return(io_pending_proxy_t *p) {
valid = false;
}
break;
+ case AWAIT_FASTGOOD:
+ if (p->client_resp->status == MCMC_OK) {
+ // End early on a hit.
+ if (p->client_resp->resp.code != MCMC_CODE_END) {
+ aw->wait_for = 0;
+ } else {
+ is_good = true;
+ }
+ }
+ break;
}
if (is_good) {