From 0dfb0250e66e73e4988370e05dba66a801066f10 Mon Sep 17 00:00:00 2001 From: Binbin Date: Mon, 29 May 2023 20:39:32 +0800 Subject: [PATCH] Fix GETEX db delete call to emit DB_FLAG_KEY_EXPIRED on expiration (#12243) We should emit DB_FLAG_KEY_EXPIRED instead of DB_FLAG_KEY_DELETED. This is an overlook in #9406. --- src/t_string.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/t_string.c b/src/t_string.c index 02785fabb..05e6e6878 100644 --- a/src/t_string.c +++ b/src/t_string.c @@ -388,8 +388,7 @@ void getexCommand(client *c) { if (((flags & OBJ_PXAT) || (flags & OBJ_EXAT)) && checkAlreadyExpired(milliseconds)) { /* When PXAT/EXAT absolute timestamp is specified, there can be a chance that timestamp * has already elapsed so delete the key in that case. */ - int deleted = server.lazyfree_lazy_expire ? dbAsyncDelete(c->db, c->argv[1]) : - dbSyncDelete(c->db, c->argv[1]); + int deleted = dbGenericDelete(c->db, c->argv[1], server.lazyfree_lazy_expire, DB_FLAG_KEY_EXPIRED); serverAssert(deleted); robj *aux = server.lazyfree_lazy_expire ? shared.unlink : shared.del; rewriteClientCommandVector(c,2,aux,c->argv[1]);