diff options
author | sundb <sundbcn@gmail.com> | 2023-05-07 15:13:19 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-07 10:13:19 +0300 |
commit | ce5f4ea3a9f4afe1c43079c93d0ff6bf6b04597a (patch) | |
tree | 7aff01dd477d7c3a66f27148671a339ae51b9668 /tests/unit/moduleapi/stream.tcl | |
parent | b0dd7b324505ebb3b6fac3f3067eba948cf0b09d (diff) | |
download | redis-ce5f4ea3a9f4afe1c43079c93d0ff6bf6b04597a.tar.gz |
Delete empty key if fails after moduleCreateEmptyKey() in module (#12129)
When `RM_ZsetAdd()`/`RM_ZsetIncrby()`/`RM_StreamAdd()` fails, if a new key happens to
be created using `moduleCreateEmptyKey()`, we should clean up the empty key.
## Test
1) Add new module commands(`zset.add` and `zset.incrby`) to cover `RM_ZsetAdd()`/`RM_ZsetIncrby()`.
2) Add a large-memory test to cover `RM_StreamAdd()`.
Diffstat (limited to 'tests/unit/moduleapi/stream.tcl')
-rw-r--r-- | tests/unit/moduleapi/stream.tcl | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/unit/moduleapi/stream.tcl b/tests/unit/moduleapi/stream.tcl index 80c24ff6c..7ad1a3059 100644 --- a/tests/unit/moduleapi/stream.tcl +++ b/tests/unit/moduleapi/stream.tcl @@ -61,6 +61,23 @@ start_server {tags {"modules"}} { assert_equal $result $n } + test {Module stream XADD big fields doesn't create empty key} { + set original_proto [config_get_set proto-max-bulk-len 2147483647] ;#2gb + set original_query [config_get_set client-query-buffer-limit 2147483647] ;#2gb + + r del mystream + r write "*4\r\n\$10\r\nstream.add\r\n\$8\r\nmystream\r\n\$5\r\nfield\r\n" + catch { + write_big_bulk 1073741824 ;#1gb + } err + assert {$err eq "ERR StreamAdd failed"} + assert_equal 0 [r exists mystream] + + # restore defaults + r config set proto-max-bulk-len $original_proto + r config set client-query-buffer-limit $original_query + } {OK} {large-memory} + test {Module stream iterator} { r del mystream set streamid1 [r xadd mystream * item 1 value a] |