mirror of
https://github.com/fluencelabs/redis
synced 2025-03-19 17:10:50 +00:00
Fix for DEBUG DIGEST
This commit is contained in:
parent
8513a757ab
commit
cbae1d34f6
18
redis.c
18
redis.c
@ -27,7 +27,7 @@
|
|||||||
* POSSIBILITY OF SUCH DAMAGE.
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define REDIS_VERSION "1.3.12"
|
#define REDIS_VERSION "1.3.13"
|
||||||
|
|
||||||
#include "fmacros.h"
|
#include "fmacros.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
@ -10432,18 +10432,23 @@ static void computeDatasetDigest(unsigned char *final) {
|
|||||||
|
|
||||||
/* Iterate this DB writing every entry */
|
/* Iterate this DB writing every entry */
|
||||||
while((de = dictNext(di)) != NULL) {
|
while((de = dictNext(di)) != NULL) {
|
||||||
robj *key, *o;
|
robj *key, *o, *kcopy;
|
||||||
time_t expiretime;
|
time_t expiretime;
|
||||||
|
|
||||||
memset(digest,0,20); /* This key-val digest */
|
memset(digest,0,20); /* This key-val digest */
|
||||||
key = dictGetEntryKey(de);
|
key = dictGetEntryKey(de);
|
||||||
|
|
||||||
|
if (!server.vm_enabled) {
|
||||||
mixObjectDigest(digest,key);
|
mixObjectDigest(digest,key);
|
||||||
if (!server.vm_enabled || key->storage == REDIS_VM_MEMORY ||
|
|
||||||
key->storage == REDIS_VM_SWAPPING) {
|
|
||||||
o = dictGetEntryVal(de);
|
o = dictGetEntryVal(de);
|
||||||
incrRefCount(o);
|
|
||||||
} else {
|
} else {
|
||||||
o = vmPreviewObject(key);
|
/* Don't work with the key directly as when VM is active
|
||||||
|
* this is unsafe: TODO: fix decrRefCount to check if the
|
||||||
|
* count really reached 0 to avoid this mess */
|
||||||
|
kcopy = dupStringObject(key);
|
||||||
|
mixObjectDigest(digest,kcopy);
|
||||||
|
o = lookupKeyRead(db,kcopy);
|
||||||
|
decrRefCount(kcopy);
|
||||||
}
|
}
|
||||||
aux = htonl(o->type);
|
aux = htonl(o->type);
|
||||||
mixDigest(digest,&aux,sizeof(aux));
|
mixDigest(digest,&aux,sizeof(aux));
|
||||||
@ -10512,7 +10517,6 @@ static void computeDatasetDigest(unsigned char *final) {
|
|||||||
} else {
|
} else {
|
||||||
redisPanic("Unknown object type");
|
redisPanic("Unknown object type");
|
||||||
}
|
}
|
||||||
decrRefCount(o);
|
|
||||||
/* If the key has an expire, add it to the mix */
|
/* If the key has an expire, add it to the mix */
|
||||||
if (expiretime != -1) xorDigest(digest,"!!expire!!",10);
|
if (expiretime != -1) xorDigest(digest,"!!expire!!",10);
|
||||||
/* We can finally xor the key-val digest to the final digest */
|
/* We can finally xor the key-val digest to the final digest */
|
||||||
|
@ -180,6 +180,7 @@ static struct redisFunctionSym symsTable[] = {
|
|||||||
{"oom",(unsigned long)oom},
|
{"oom",(unsigned long)oom},
|
||||||
{"pingCommand",(unsigned long)pingCommand},
|
{"pingCommand",(unsigned long)pingCommand},
|
||||||
{"popGenericCommand",(unsigned long)popGenericCommand},
|
{"popGenericCommand",(unsigned long)popGenericCommand},
|
||||||
|
{"prepareForShutdown",(unsigned long)prepareForShutdown},
|
||||||
{"processCommand",(unsigned long)processCommand},
|
{"processCommand",(unsigned long)processCommand},
|
||||||
{"processInputBuffer",(unsigned long)processInputBuffer},
|
{"processInputBuffer",(unsigned long)processInputBuffer},
|
||||||
{"psubscribeCommand",(unsigned long)psubscribeCommand},
|
{"psubscribeCommand",(unsigned long)psubscribeCommand},
|
||||||
@ -260,6 +261,7 @@ static struct redisFunctionSym symsTable[] = {
|
|||||||
{"setnxCommand",(unsigned long)setnxCommand},
|
{"setnxCommand",(unsigned long)setnxCommand},
|
||||||
{"setupSigSegvAction",(unsigned long)setupSigSegvAction},
|
{"setupSigSegvAction",(unsigned long)setupSigSegvAction},
|
||||||
{"shutdownCommand",(unsigned long)shutdownCommand},
|
{"shutdownCommand",(unsigned long)shutdownCommand},
|
||||||
|
{"sigtermHandler",(unsigned long)sigtermHandler},
|
||||||
{"sinterCommand",(unsigned long)sinterCommand},
|
{"sinterCommand",(unsigned long)sinterCommand},
|
||||||
{"sinterGenericCommand",(unsigned long)sinterGenericCommand},
|
{"sinterGenericCommand",(unsigned long)sinterGenericCommand},
|
||||||
{"sinterstoreCommand",(unsigned long)sinterstoreCommand},
|
{"sinterstoreCommand",(unsigned long)sinterstoreCommand},
|
||||||
@ -272,6 +274,8 @@ static struct redisFunctionSym symsTable[] = {
|
|||||||
{"spopCommand",(unsigned long)spopCommand},
|
{"spopCommand",(unsigned long)spopCommand},
|
||||||
{"srandmemberCommand",(unsigned long)srandmemberCommand},
|
{"srandmemberCommand",(unsigned long)srandmemberCommand},
|
||||||
{"sremCommand",(unsigned long)sremCommand},
|
{"sremCommand",(unsigned long)sremCommand},
|
||||||
|
{"startAppendOnly",(unsigned long)startAppendOnly},
|
||||||
|
{"stopAppendOnly",(unsigned long)stopAppendOnly},
|
||||||
{"stringObjectLen",(unsigned long)stringObjectLen},
|
{"stringObjectLen",(unsigned long)stringObjectLen},
|
||||||
{"stringmatch",(unsigned long)stringmatch},
|
{"stringmatch",(unsigned long)stringmatch},
|
||||||
{"stringmatchlen",(unsigned long)stringmatchlen},
|
{"stringmatchlen",(unsigned long)stringmatchlen},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user