summaryrefslogtreecommitdiff
path: root/tests/unit/moduleapi/stream.tcl
diff options
context:
space:
mode:
authorsundb <sundbcn@gmail.com>2023-05-07 15:13:19 +0800
committerGitHub <noreply@github.com>2023-05-07 10:13:19 +0300
commitce5f4ea3a9f4afe1c43079c93d0ff6bf6b04597a (patch)
tree7aff01dd477d7c3a66f27148671a339ae51b9668 /tests/unit/moduleapi/stream.tcl
parentb0dd7b324505ebb3b6fac3f3067eba948cf0b09d (diff)
downloadredis-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.tcl17
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]