redict/tests/modules
perryitay c4b788230c
Adding module api for processing commands during busy jobs and allow flagging the commands that should be handled at this status (#9963)
Some modules might perform a long-running logic in different stages of Redis lifetime, for example:
* command execution
* RDB loading
* thread safe context

During this long-running logic Redis is not responsive.

This PR offers 
1. An API to process events while a busy command is running (`RM_Yield`)
2. A new flag (`ALLOW_BUSY`) to mark the commands that should be handled during busy
  jobs which can also be used by modules (`allow-busy`)
3. In slow commands and thread safe contexts, this flag will start rejecting commands with -BUSY only
  after `busy-reply-threshold`
4. During loading (`rdb_load` callback), it'll process events right away (not wait for `busy-reply-threshold`),
  but either way, the processing is throttled to the server hz rate.
5. Allow modules to Yield to redis background tasks, but not to client commands

* rename `script-time-limit` to `busy-reply-threshold` (an alias to the pre-7.0 `lua-time-limit`)

Co-authored-by: Oran Agra <oran@redislabs.com>
2022-01-20 09:05:53 +02:00
..
aclcheck.c Modules: Mark all APIs non-experimental (#9983) 2021-12-30 12:17:22 +02:00
auth.c Modules: Mark all APIs non-experimental (#9983) 2021-12-30 12:17:22 +02:00
basics.c Modules: Mark all APIs non-experimental (#9983) 2021-12-30 12:17:22 +02:00
blockedclient.c Adding module api for processing commands during busy jobs and allow flagging the commands that should be handled at this status (#9963) 2022-01-20 09:05:53 +02:00
blockonbackground.c Modules: Mark all APIs non-experimental (#9983) 2021-12-30 12:17:22 +02:00
blockonkeys.c Modules: Mark all APIs non-experimental (#9983) 2021-12-30 12:17:22 +02:00
commandfilter.c Modules: Mark all APIs non-experimental (#9983) 2021-12-30 12:17:22 +02:00
datatype2.c Use const char pointer in redismodule.h as far as possible (#10064) 2022-01-18 15:55:20 +02:00
datatype.c Adding module api for processing commands during busy jobs and allow flagging the commands that should be handled at this status (#9963) 2022-01-20 09:05:53 +02:00
defragtest.c Modules: Mark all APIs non-experimental (#9983) 2021-12-30 12:17:22 +02:00
eventloop.c Add event loop support to the module API (#10001) 2022-01-18 13:10:07 +02:00
fork.c Modules: Mark all APIs non-experimental (#9983) 2021-12-30 12:17:22 +02:00
getkeys.c Modules: Mark all APIs non-experimental (#9983) 2021-12-30 12:17:22 +02:00
hash.c Sort out the mess around writable replicas and lookupKeyRead/Write (#9572) 2021-11-28 11:26:28 +02:00
hooks.c Always create base AOF file when redis start from empty. (#10102) 2022-01-13 08:49:26 +02:00
infotest.c Escape unsafe field name characters in INFO. (#8492) 2021-02-15 17:08:53 +02:00
keyspace_events.c Modules: Mark all APIs non-experimental (#9983) 2021-12-30 12:17:22 +02:00
keyspecs.c New detailed key-spec flags (RO, RW, OW, RM, ACCESS, UPDATE, INSERT, DELETE) (#10122) 2022-01-18 16:00:00 +02:00
list.c Sort out the mess around writable replicas and lookupKeyRead/Write (#9572) 2021-11-28 11:26:28 +02:00
Makefile Add event loop support to the module API (#10001) 2022-01-18 13:10:07 +02:00
misc.c Added RM_MonotonicMicroseconds() API to provide monotonic time function (#10101) 2022-01-13 11:36:03 +02:00
propagate.c Modules: Mark all APIs non-experimental (#9983) 2021-12-30 12:17:22 +02:00
reply.c Add RM_ReplyWithBigNumber module API (#9639) 2021-10-25 11:31:20 +03:00
scan.c Replace deprecated REDISMODULE_POSTPONED_ARRAY_LEN in module tests and examples (#9677) 2021-10-25 12:00:43 +03:00
stream.c Sort out the mess around writable replicas and lookupKeyRead/Write (#9572) 2021-11-28 11:26:28 +02:00
subcommands.c New detailed key-spec flags (RO, RW, OW, RM, ACCESS, UPDATE, INSERT, DELETE) (#10122) 2022-01-18 16:00:00 +02:00
test_lazyfree.c Sort out the mess around writable replicas and lookupKeyRead/Write (#9572) 2021-11-28 11:26:28 +02:00
testrdb.c Sort out the mess around writable replicas and lookupKeyRead/Write (#9572) 2021-11-28 11:26:28 +02:00
timer.c Modules: Mark all APIs non-experimental (#9983) 2021-12-30 12:17:22 +02:00
zset.c Sort out the mess around writable replicas and lookupKeyRead/Write (#9572) 2021-11-28 11:26:28 +02:00