stream 类型某种情况下会解析失败
Closed this issue · 2 comments
zenxme commented
复现流程:
- 启动一个 redis 实例:
docker run -it --rm --name redistest -v $PWD/tempdata/:/data/ -p 6379:6379 redis:7.0 redis-server --save 10 1
- 运行下面go程序 写入数据:
package main
import (
"context"
"fmt"
redis "github.com/redis/go-redis/v9"
)
func main() {
c := redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6379",
DB: 0,
})
n := 9999
for i := 0; i < n*2; i++ {
err := c.XAdd(context.Background(), &redis.XAddArgs{
Stream: "mytest",
Values: []string{"info", `abcd`},
MaxLen: int64(n),
Approx: true,
}).Err()
if err != nil {
panic(err)
}
fmt.Println(i)
}
}
- 进入上面的 tempdata 目录开始分析,
rdb -c memory -o memory.csv dump.rdb
,有报错
error: read stream item id seq failed: -1 is not a uint
HDT3213 commented
ok, 有空看一下
HDT3213 commented
修复了,消息的 sequence 字段可能是负数,加上 master entry 的 sequence 之后才能保证为正数