Clarify RM_BlockClient() error condition. (#6093)
(cherry picked from commit 7af05f07ff72a4246ddaf986a1e815eadd0cbfef)
This commit is contained in:
parent
2bcc056a41
commit
e8efcdee0a
@ -4347,6 +4347,7 @@ void unblockClientFromModule(client *c) {
|
|||||||
* Even when blocking on keys, RM_UnblockClient() can be called however, but
|
* Even when blocking on keys, RM_UnblockClient() can be called however, but
|
||||||
* in that case the privdata argument is disregarded, because we pass the
|
* in that case the privdata argument is disregarded, because we pass the
|
||||||
* reply callback the privdata that is set here while blocking.
|
* reply callback the privdata that is set here while blocking.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
RedisModuleBlockedClient *moduleBlockClient(RedisModuleCtx *ctx, RedisModuleCmdFunc reply_callback, RedisModuleCmdFunc timeout_callback, void (*free_privdata)(RedisModuleCtx*,void*), long long timeout_ms, RedisModuleString **keys, int numkeys, void *privdata) {
|
RedisModuleBlockedClient *moduleBlockClient(RedisModuleCtx *ctx, RedisModuleCmdFunc reply_callback, RedisModuleCmdFunc timeout_callback, void (*free_privdata)(RedisModuleCtx*,void*), long long timeout_ms, RedisModuleString **keys, int numkeys, void *privdata) {
|
||||||
client *c = ctx->client;
|
client *c = ctx->client;
|
||||||
@ -4439,6 +4440,14 @@ int moduleTryServeClientBlockedOnKey(client *c, robj *key) {
|
|||||||
* Note: RedisModule_UnblockClient should be called for every blocked client,
|
* Note: RedisModule_UnblockClient should be called for every blocked client,
|
||||||
* even if client was killed, timed-out or disconnected. Failing to do so
|
* even if client was killed, timed-out or disconnected. Failing to do so
|
||||||
* will result in memory leaks.
|
* will result in memory leaks.
|
||||||
|
*
|
||||||
|
* There are some cases where RedisModule_BlockClient() cannot be used:
|
||||||
|
*
|
||||||
|
* 1. If the client is a Lua script.
|
||||||
|
* 2. If the client is executing a MULTI block.
|
||||||
|
*
|
||||||
|
* In these cases, a call to RedisModule_BlockClient() will **not** block the
|
||||||
|
* client, but instead produce a specific error reply.
|
||||||
*/
|
*/
|
||||||
RedisModuleBlockedClient *RM_BlockClient(RedisModuleCtx *ctx, RedisModuleCmdFunc reply_callback, RedisModuleCmdFunc timeout_callback, void (*free_privdata)(RedisModuleCtx*,void*), long long timeout_ms) {
|
RedisModuleBlockedClient *RM_BlockClient(RedisModuleCtx *ctx, RedisModuleCmdFunc reply_callback, RedisModuleCmdFunc timeout_callback, void (*free_privdata)(RedisModuleCtx*,void*), long long timeout_ms) {
|
||||||
return moduleBlockClient(ctx,reply_callback,timeout_callback,free_privdata,timeout_ms, NULL,0,NULL);
|
return moduleBlockClient(ctx,reply_callback,timeout_callback,free_privdata,timeout_ms, NULL,0,NULL);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user