From 7cc892284f1e4484f03ce9ee4af58e053bdf4d24 Mon Sep 17 00:00:00 2001 From: John Sully Date: Mon, 16 Dec 2019 20:16:07 -0500 Subject: [PATCH] Extra expire validation on save Former-commit-id: 037290cd2ec1b237df5236a86915d63d53fb48ce --- src/rdb.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/rdb.cpp b/src/rdb.cpp index 0e33cdd59..e1c5567fc 100644 --- a/src/rdb.cpp +++ b/src/rdb.cpp @@ -1121,6 +1121,7 @@ int saveKey(rio *rdb, const redisDbPersistentDataSnapshot *db, int flags, size_t initStaticStringObject(key,(char*)keystr); const expireEntry *pexpire = db->getExpire(&key); + serverAssert(!o->FExpires() || pexpire != nullptr); if (rdbSaveKeyValuePair(rdb,&key,o,pexpire) == -1) return 0; @@ -1182,8 +1183,11 @@ int rdbSaveRio(rio *rdb, const redisDbPersistentDataSnapshot **rgpdb, int *error /* Iterate this DB writing every entry */ size_t ckeysExpired = 0; bool fSavedAll = db->iterate_threadsafe([&](const char *keystr, robj_roptr o)->bool { - if (o->FExpires()) + if (o->FExpires()) { ++ckeysExpired; + } else { + serverAssert(db->getExpire(keystr) == nullptr); + } if (!saveKey(rdb, db, flags, &processed, keystr, o)) return false;