diff options
author | Salvatore Sanfilippo <antirez@gmail.com> | 2020-03-26 11:12:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-26 11:12:44 +0100 |
commit | 2ea7f0ecad118a4dc43a34a1b771a8c9070b883d (patch) | |
tree | 5575da198e06738a8a5de9c4b7d21183dcda0f81 | |
parent | c4d7f30e250b4b291e6d5893d9a3323df4a57c7c (diff) | |
parent | 3b29556a0cd9db0daa7828fe81df41fbe95e04dc (diff) | |
download | redis-2ea7f0ecad118a4dc43a34a1b771a8c9070b883d.tar.gz |
Merge pull request #6644 from oranagra/stream_aofrw
AOFRW on an empty stream created with MKSTREAM loads badkly
-rw-r--r-- | src/aof.c | 3 | ||||
-rw-r--r-- | tests/unit/type/stream-cgroups.tcl | 13 |
2 files changed, 15 insertions, 1 deletions
@@ -1212,12 +1212,13 @@ int rewriteStreamObject(rio *r, robj *key, robj *o) { /* Use the XADD MAXLEN 0 trick to generate an empty stream if * the key we are serializing is an empty string, which is possible * for the Stream type. */ + id.ms = 0; id.seq = 1; if (rioWriteBulkCount(r,'*',7) == 0) return 0; if (rioWriteBulkString(r,"XADD",4) == 0) return 0; if (rioWriteBulkObject(r,key) == 0) return 0; if (rioWriteBulkString(r,"MAXLEN",6) == 0) return 0; if (rioWriteBulkString(r,"0",1) == 0) return 0; - if (rioWriteBulkStreamID(r,&s->last_id) == 0) return 0; + if (rioWriteBulkStreamID(r,&id) == 0) return 0; if (rioWriteBulkString(r,"x",1) == 0) return 0; if (rioWriteBulkString(r,"y",1) == 0) return 0; } diff --git a/tests/unit/type/stream-cgroups.tcl b/tests/unit/type/stream-cgroups.tcl index 072ed14d6..6b9a4a9cd 100644 --- a/tests/unit/type/stream-cgroups.tcl +++ b/tests/unit/type/stream-cgroups.tcl @@ -311,4 +311,17 @@ start_server { } } } + + start_server {tags {"stream"} overrides {appendonly yes aof-use-rdb-preamble no}} { + test {Empty stream with no lastid can be rewrite into AOF correctly} { + r XGROUP CREATE mystream group-name $ MKSTREAM + assert {[dict get [r xinfo stream mystream] length] == 0} + set grpinfo [r xinfo groups mystream] + r bgrewriteaof + waitForBgrewriteaof r + r debug loadaof + assert {[dict get [r xinfo stream mystream] length] == 0} + assert {[r xinfo groups mystream] == $grpinfo} + } + } } |