diff --git a/src/blocked.c b/src/blocked.c index 12b1ebdc4..b1731e552 100644 --- a/src/blocked.c +++ b/src/blocked.c @@ -269,7 +269,7 @@ void handleClientsBlockedOnKeys(void) { * that) without the risk of it being freed in the second * lookup, invalidating the first one. * See https://github.com/antirez/redis/pull/6554. */ - server.call_depth++; + server.fixed_time_expire++; updateCachedTime(0); /* Serve clients blocked on list key. */ @@ -467,8 +467,7 @@ void handleClientsBlockedOnKeys(void) { } } } - - server.call_depth--; + server.fixed_time_expire--; /* Free this item. */ decrRefCount(rl->key); diff --git a/src/db.c b/src/db.c index 3a66d2b45..e5a672a5c 100644 --- a/src/db.c +++ b/src/db.c @@ -1151,7 +1151,7 @@ int keyIsExpired(redisDb *db, robj *key) { * may re-open the same key multiple times, can invalidate an already * open object in a next call, if the next call will see the key expired, * while the first did not. */ - else if (server.call_depth > 0) { + else if (server.fixed_time_expire > 0) { now = server.mstime; } /* For the other cases, we want to use the most fresh time we have. */ diff --git a/src/server.c b/src/server.c index caf943f80..ff43a76dc 100644 --- a/src/server.c +++ b/src/server.c @@ -2038,7 +2038,7 @@ void initServer(void) { server.hz = server.config_hz; server.pid = getpid(); server.current_client = NULL; - server.call_depth = 0; + server.fixed_time_expire = 0; server.clients = listCreate(); server.clients_index = raxNew(); server.clients_to_close = listCreate(); @@ -2431,7 +2431,7 @@ void call(client *c, int flags) { int client_old_flags = c->flags; struct redisCommand *real_cmd = c->cmd; - server.call_depth++; + server.fixed_time_expire++; /* Sent the command to clients in MONITOR mode, only if the commands are * not generated from reading an AOF. */ @@ -2547,7 +2547,7 @@ void call(client *c, int flags) { redisOpArrayFree(&server.also_propagate); } server.also_propagate = prev_also_propagate; - server.call_depth--; + server.fixed_time_expire--; server.stat_numcommands++; } diff --git a/src/server.h b/src/server.h index 8c0ec3809..94b76abb7 100644 --- a/src/server.h +++ b/src/server.h @@ -990,7 +990,7 @@ struct redisServer { list *clients_pending_write; /* There is to write or install handler. */ list *slaves, *monitors; /* List of slaves and MONITORs */ client *current_client; /* Current client executing the command. */ - long call_depth; /* call() re-entering count. */ + long fixed_time_expire; /* If > 0, expire keys against server.mstime. */ rax *clients_index; /* Active clients dictionary by client ID. */ int clients_paused; /* True if clients are currently paused */ mstime_t clients_pause_end_time; /* Time when we undo clients_paused */