zhaozhao.zz 8226f39fb2
do not call handleClientsBlockedOnKeys inside yielding command (#12459)
Fix the assertion when a busy script (timeout) signal ready keys (like LPUSH),
and then an arbitrary client's `allow-busy` command steps into `handleClientsBlockedOnKeys`
try wake up clients blocked on keys (like BLPOP).

Reproduction process:
1. start a redis with aof
    `./redis-server --appendonly yes`
2. exec blpop
    `127.0.0.1:6379> blpop a 0`
3. use another client call a busy script and this script push the blocked key
    `127.0.0.1:6379> eval "redis.call('lpush','a','b') while(1) do end" 0`
4. user a new client call an allow-busy command like auth
    `127.0.0.1:6379> auth a`

BTW, this issue also break the atomicity of script.

This bug has been around for many years, the old versions only have the
atomic problem, only 7.0/7.2 has the assertion problem.

Co-authored-by: Oran Agra <oran@redislabs.com>
2023-08-05 09:52:03 +03:00
..
2022-11-23 17:39:08 +02:00
2020-04-24 17:11:21 -07:00
2022-11-09 19:50:07 +02:00
2022-11-09 19:50:07 +02:00
2022-03-09 13:58:23 +02:00
2020-05-05 23:35:08 -04:00
2022-08-23 12:37:56 +03:00
2022-04-17 15:43:22 +03:00
2022-10-02 13:56:45 +03:00
2022-08-23 12:37:56 +03:00
2023-02-12 09:23:29 +02:00
2023-02-12 09:23:29 +02:00
2021-07-10 10:04:54 -05:00
2022-07-18 10:56:26 +03:00
2023-01-22 16:32:20 +02:00
2023-06-22 08:10:42 -07:00
2023-06-22 08:10:42 -07:00
2023-02-12 09:23:29 +02:00