fix: when rewrite complex type, use overlay rather than append or merge (#932)
This commit is contained in:
parent
0a7aad7459
commit
a340c31510
|
@ -24,6 +24,7 @@ func (o *HashObject) LoadFromBuffer(rd io.Reader, key string, typeByte byte) {
|
|||
func (o *HashObject) Rewrite() <-chan RedisCmd {
|
||||
go func() {
|
||||
defer close(o.cmdC)
|
||||
o.cmdC <- RedisCmd{"del", o.key}
|
||||
switch o.typeByte {
|
||||
case rdbTypeHash:
|
||||
o.readHash()
|
||||
|
|
|
@ -30,6 +30,7 @@ func (o *ListObject) LoadFromBuffer(rd io.Reader, key string, typeByte byte) {
|
|||
func (o *ListObject) Rewrite() <-chan RedisCmd {
|
||||
go func() {
|
||||
defer close(o.cmdC)
|
||||
o.cmdC <- RedisCmd{"del", o.key}
|
||||
switch o.typeByte {
|
||||
case rdbTypeList:
|
||||
o.readList()
|
||||
|
|
|
@ -140,6 +140,7 @@ func (o *BloomObject) Rewrite() <-chan RedisCmd {
|
|||
} else {
|
||||
h = getEncodedHeader(&o.sb, true, true)
|
||||
}
|
||||
cmdC <- RedisCmd{"del", o.key}
|
||||
cmd := RedisCmd{"BF.LOADCHUNK", o.key, "1", h}
|
||||
cmdC <- cmd
|
||||
curIter := uint64(1)
|
||||
|
|
|
@ -24,6 +24,7 @@ func (o *SetObject) LoadFromBuffer(rd io.Reader, key string, typeByte byte) {
|
|||
func (o *SetObject) Rewrite() <-chan RedisCmd {
|
||||
go func() {
|
||||
defer close(o.cmdC)
|
||||
o.cmdC <- RedisCmd{"del", o.key}
|
||||
switch o.typeByte {
|
||||
case rdbTypeSet:
|
||||
o.readSet()
|
||||
|
|
|
@ -19,6 +19,9 @@ func testOne(t *testing.T, typeByte byte, setData string, values []string) {
|
|||
cmdC := o.Rewrite()
|
||||
var elements []string
|
||||
for cmd := range cmdC {
|
||||
if cmd[0] == "del" {
|
||||
continue
|
||||
}
|
||||
elements = append(elements, cmd[2])
|
||||
}
|
||||
if len(elements) != len(values) {
|
||||
|
|
|
@ -57,6 +57,7 @@ func (o *StreamObject) LoadFromBuffer(rd io.Reader, key string, typeByte byte) {
|
|||
func (o *StreamObject) Rewrite() <-chan RedisCmd {
|
||||
go func() {
|
||||
defer close(o.cmdC)
|
||||
o.cmdC <- RedisCmd{"del", o.key}
|
||||
switch o.typeByte {
|
||||
case rdbTypeStreamListpacks:
|
||||
o.readStream()
|
||||
|
|
|
@ -26,6 +26,7 @@ func (o *TairHashObject) Rewrite() <-chan RedisCmd {
|
|||
dictSizeStr := structure.ReadModuleUnsigned(rd)
|
||||
key := structure.ReadModuleString(rd)
|
||||
size, _ := strconv.Atoi(dictSizeStr)
|
||||
cmdC <- RedisCmd{"del", key}
|
||||
for i := 0; i < size; i++ {
|
||||
skey := structure.ReadModuleString(rd)
|
||||
version := structure.ReadModuleUnsigned(rd)
|
||||
|
|
|
@ -25,6 +25,7 @@ func (o *TairZsetObject) Rewrite() <-chan RedisCmd {
|
|||
cmdC := o.cmdC
|
||||
go func() {
|
||||
defer close(cmdC)
|
||||
cmdC <- RedisCmd{"del", o.key}
|
||||
length, _ := strconv.Atoi(structure.ReadModuleUnsigned(rd))
|
||||
scoreNum, _ := strconv.Atoi(structure.ReadModuleUnsigned(rd))
|
||||
for i := 0; i < length; i++ {
|
||||
|
|
|
@ -25,6 +25,7 @@ func (o *ZsetObject) LoadFromBuffer(rd io.Reader, key string, typeByte byte) {
|
|||
func (o *ZsetObject) Rewrite() <-chan RedisCmd {
|
||||
go func() {
|
||||
defer close(o.cmdC)
|
||||
o.cmdC <- RedisCmd{"del", o.key}
|
||||
switch o.typeByte {
|
||||
case rdbTypeZSet:
|
||||
o.readZset()
|
||||
|
|
Loading…
Reference in New Issue