From 70faf2f3758691b6d8b07ef280c93d5e843e26dd Mon Sep 17 00:00:00 2001 From: John Sully Date: Wed, 25 Mar 2020 01:06:40 -0400 Subject: [PATCH] Expire entry needs to be resorted after a subkey expires Former-commit-id: b357803362728c26a1169e3cec279c693b86205b --- src/expire.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/expire.cpp b/src/expire.cpp index 66a05e4ef..1ac6ab415 100644 --- a/src/expire.cpp +++ b/src/expire.cpp @@ -135,6 +135,15 @@ void activeExpireCycleExpire(redisDb *db, expireEntry &e, long long now) { if (deleted) { + if (!pfat->FEmpty()) + { + // We need to resort the expire entry since it may no longer be in the correct position + auto itr = db->setexpire->find(e.key()); + expireEntry eT = std::move(e); + db->setexpire->erase(itr); + db->setexpire->insert(eT); + } + robj objT; switch (val->type) {