Fix breaks from merge
Former-commit-id: fa76d19bee9df21967c4d8554128eebdd19021fa
This commit is contained in:
parent
3eb99b4811
commit
375b204382
@ -1469,6 +1469,14 @@ int redisDbPersistentData::removeSubkeyExpire(robj *key, robj *subkey) {
|
|||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void redisDbPersistentData::resortExpire(expireEntry &e)
|
||||||
|
{
|
||||||
|
auto itr = m_setexpire->find(e.key());
|
||||||
|
expireEntry eT = std::move(e);
|
||||||
|
m_setexpire->erase(itr);
|
||||||
|
m_setexpire->insert(eT);
|
||||||
|
}
|
||||||
|
|
||||||
/* Set an expire to the specified key. If the expire is set in the context
|
/* Set an expire to the specified key. If the expire is set in the context
|
||||||
* of an user calling a command 'c' is the client, otherwise 'c' is set
|
* of an user calling a command 'c' is the client, otherwise 'c' is set
|
||||||
* to NULL. The 'when' parameter is the absolute unix time in milliseconds
|
* to NULL. The 'when' parameter is the absolute unix time in milliseconds
|
||||||
|
@ -132,15 +132,17 @@ void activeExpireCycleExpire(redisDb *db, expireEntry &e, long long now) {
|
|||||||
pfat->popfrontExpireEntry();
|
pfat->popfrontExpireEntry();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
robj *keyobj = nullptr;
|
||||||
|
|
||||||
|
if (deleted || pfat->FEmpty())
|
||||||
|
keyobj = createStringObject(e.key(),sdslen(e.key()));
|
||||||
|
|
||||||
if (deleted)
|
if (deleted)
|
||||||
{
|
{
|
||||||
if (!pfat->FEmpty())
|
if (!pfat->FEmpty())
|
||||||
{
|
{
|
||||||
// We need to resort the expire entry since it may no longer be in the correct position
|
// We need to resort the expire entry since it may no longer be in the correct position
|
||||||
auto itr = db->setexpire->find(e.key());
|
db->resortExpire(e);
|
||||||
expireEntry eT = std::move(e);
|
|
||||||
db->setexpire->erase(itr);
|
|
||||||
db->setexpire->insert(eT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
robj objT;
|
robj objT;
|
||||||
@ -156,10 +158,11 @@ void activeExpireCycleExpire(redisDb *db, expireEntry &e, long long now) {
|
|||||||
|
|
||||||
if (pfat->FEmpty())
|
if (pfat->FEmpty())
|
||||||
{
|
{
|
||||||
robj *keyobj = createStringObject(e.key(),sdslen(e.key()));
|
|
||||||
removeExpire(db, keyobj);
|
removeExpire(db, keyobj);
|
||||||
decrRefCount(keyobj);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (keyobj)
|
||||||
|
decrRefCount(keyobj);
|
||||||
}
|
}
|
||||||
|
|
||||||
int parseUnitString(const char *sz)
|
int parseUnitString(const char *sz)
|
||||||
|
@ -1277,6 +1277,7 @@ public:
|
|||||||
size_t expireSize() const { return m_setexpire->size(); }
|
size_t expireSize() const { return m_setexpire->size(); }
|
||||||
int removeExpire(robj *key, dict_iter itr);
|
int removeExpire(robj *key, dict_iter itr);
|
||||||
int removeSubkeyExpire(robj *key, robj *subkey);
|
int removeSubkeyExpire(robj *key, robj *subkey);
|
||||||
|
void resortExpire(expireEntry &e);
|
||||||
void clear(void(callback)(void*));
|
void clear(void(callback)(void*));
|
||||||
void emptyDbAsync();
|
void emptyDbAsync();
|
||||||
// Note: If you do not need the obj then use the objless iterator version. It's faster
|
// Note: If you do not need the obj then use the objless iterator version. It's faster
|
||||||
@ -1468,6 +1469,7 @@ struct redisDb : public redisDbPersistentDataSnapshot
|
|||||||
using redisDbPersistentData::consolidate_snapshot;
|
using redisDbPersistentData::consolidate_snapshot;
|
||||||
using redisDbPersistentData::removeAllCachedValues;
|
using redisDbPersistentData::removeAllCachedValues;
|
||||||
using redisDbPersistentData::dictUnsafeKeyOnly;
|
using redisDbPersistentData::dictUnsafeKeyOnly;
|
||||||
|
using redisDbPersistentData::resortExpire;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
expireset::setiter expireitr;
|
expireset::setiter expireitr;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user