Fix crash with traditional expiration
Former-commit-id: 0ba5b2c3d66d3a1a520f223ad2c288c22601bd5a
This commit is contained in:
parent
94645b33dd
commit
95371d60fe
@ -1234,7 +1234,10 @@ void setExpire(client *c, redisDb *db, robj *key, robj *subkey, long long when)
|
||||
if (((robj*)dictGetVal(kde))->FExpires()) {
|
||||
auto itr = db->setexpire->find((sds)dictGetKey(kde));
|
||||
serverAssert(itr != db->setexpire->end());
|
||||
itr->update(szSubKey, when);
|
||||
expireEntry eNew(std::move(*itr));
|
||||
eNew.update(szSubKey, when);
|
||||
db->setexpire->erase(itr);
|
||||
db->setexpire->insert(eNew);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -68,7 +68,10 @@ void activeExpireCycleExpireFullKey(redisDb *db, const char *key) {
|
||||
* to the function to avoid too many gettimeofday() syscalls. */
|
||||
void activeExpireCycleExpire(redisDb *db, expireEntry &e, long long now) {
|
||||
if (!e.FFat())
|
||||
{
|
||||
activeExpireCycleExpireFullKey(db, e.key());
|
||||
return;
|
||||
}
|
||||
|
||||
expireEntryFat *pfat = e.pfatentry();
|
||||
dictEntry *de = dictFind(db->pdict, e.key());
|
||||
|
Loading…
x
Reference in New Issue
Block a user