We can't set FExpire() on shared objects, issue #66
Former-commit-id: 2794cfced4fdb18c0860e966dde0b46b9584c4dc
This commit is contained in:
parent
8c46a1fba2
commit
a0d7eb5a19
13
src/db.cpp
13
src/db.cpp
@ -231,17 +231,24 @@ void dbOverwriteCore(redisDb *db, dictEntry *de, robj *key, robj *val, bool fUpd
|
||||
robj *old = (robj*)dictGetVal(de);
|
||||
|
||||
if (old->FExpires()) {
|
||||
if (fRemoveExpire)
|
||||
if (fRemoveExpire) {
|
||||
removeExpire(db, key);
|
||||
else
|
||||
}
|
||||
else {
|
||||
if (val->getrefcount(std::memory_order_relaxed) == OBJ_SHARED_REFCOUNT)
|
||||
val = dupStringObject(val);
|
||||
updateExpire(db, (sds)dictGetKey(de), old, val);
|
||||
}
|
||||
}
|
||||
|
||||
if (g_pserver->maxmemory_policy & MAXMEMORY_FLAG_LFU) {
|
||||
val->lru = old->lru;
|
||||
}
|
||||
if (fUpdateMvcc)
|
||||
if (fUpdateMvcc) {
|
||||
if (val->getrefcount(std::memory_order_relaxed) == OBJ_SHARED_REFCOUNT)
|
||||
val = dupStringObject(val);
|
||||
val->mvcc_tstamp = getMvccTstamp();
|
||||
}
|
||||
|
||||
dictSetVal(db->pdict, de, val);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user