提交 51857c7e 编写于 作者: A Alex Mitrofanov 提交者: antirez

Fixed RESTORE hash failure (Issue #532)

(additional commit notes by antirez@gmail.com):

The rdbIsObjectType() macro was not updated when the new RDB object type
of ziplist encoded hashes was added.

As a result RESTORE, that uses rdbLoadObjectType(), failed when a
ziplist encoded hash was loaded.
This does not affected normal RDB loading because in that case we use
the lower-level function rdbLoadType().

The commit also adds a regression test.
上级 c7a25200
......@@ -54,7 +54,7 @@
#define REDIS_RDB_TYPE_HASH_ZIPLIST 13
/* Test if a type is an object type. */
#define rdbIsObjectType(t) ((t >= 0 && t <= 4) || (t >= 9 && t <= 12))
#define rdbIsObjectType(t) ((t >= 0 && t <= 4) || (t >= 9 && t <= 13))
/* Special RDB opcodes (saved/loaded with rdbSaveType/rdbLoadType). */
#define REDIS_RDB_OPCODE_EXPIRETIME_MS 252
......
......@@ -91,6 +91,26 @@ start_server {tags {"dump"}} {
}
}
test {MIGRATE can correctly transfer hashes} {
set first [srv 0 client]
r del key
r hmset key field1 "item 1" field2 "item 2" field3 "item 3" \
field4 "item 4" field5 "item 5" field6 "item 6"
start_server {tags {"repl"}} {
set second [srv 0 client]
set second_host [srv 0 host]
set second_port [srv 0 port]
assert {[$first exists key] == 1}
assert {[$second exists key] == 0}
set ret [r -1 migrate $second_host $second_port key 9 10000]
assert {$ret eq {OK}}
assert {[$first exists key] == 0}
assert {[$second exists key] == 1}
assert {[$second ttl key] == -1}
}
}
test {MIGRATE timeout actually works} {
set first [srv 0 client]
r set key "Some Value"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册