diff options
author | dormando <dormando@rydia.net> | 2022-09-23 12:30:03 -0700 |
---|---|---|
committer | dormando <dormando@rydia.net> | 2022-09-27 12:38:25 -0700 |
commit | 1ba54b05a4a23d1acd85b5c14384ac8cbaed8478 (patch) | |
tree | 934fcdaca39a8cc7935c5e204fa6d36e129a0a49 /proxy_await.c | |
parent | 725954d3a37ff0596f4a8e53c5746eec3a30166d (diff) | |
download | memcached-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.c | 11 |
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) { |