Unverified Commit b93ccee4 authored by Binbin's avatar Binbin Committed by GitHub
Browse files

Fix timing issue in strem blocking tests (#9927)

A test failure was reported in Daily CI (FreeBSD).
`XREAD: XADD + DEL should not awake client`

```
*** [err]: XREAD: XADD + DEL should not awake client in tests/unit/type/stream.tcl
Expected [lindex  0 0] eq {s1} (context: type eval line 11 cmd {assert {[lindex $res 0 0] eq {s1}}} proc ::test)
```

It seems that `r` is executed before `rd` enters the blocking
state. And ended up getting a empty reply by timeout.

We use `wait_for_blocked_clients_count` to wait for the
blocking client to be ready and avoid this situation.
Also fixed other test cases that may have the same issue.
parent 5b351d07
...@@ -358,6 +358,7 @@ start_server { ...@@ -358,6 +358,7 @@ start_server {
set rd [redis_deferring_client] set rd [redis_deferring_client]
r del s1 r del s1
$rd XREAD BLOCK 20000 STREAMS s1 $ $rd XREAD BLOCK 20000 STREAMS s1 $
wait_for_blocked_clients_count 1
r multi r multi
r XADD s1 * old abcd1234 r XADD s1 * old abcd1234
r DEL s1 r DEL s1
...@@ -373,6 +374,7 @@ start_server { ...@@ -373,6 +374,7 @@ start_server {
set rd [redis_deferring_client] set rd [redis_deferring_client]
r del s1 r del s1
$rd XREAD BLOCK 20000 STREAMS s1 $ $rd XREAD BLOCK 20000 STREAMS s1 $
wait_for_blocked_clients_count 1
r multi r multi
r XADD s1 * old abcd1234 r XADD s1 * old abcd1234
r DEL s1 r DEL s1
...@@ -390,6 +392,7 @@ start_server { ...@@ -390,6 +392,7 @@ start_server {
r XADD s2 * old abcd1234 r XADD s2 * old abcd1234
set rd [redis_deferring_client] set rd [redis_deferring_client]
$rd XREAD BLOCK 20000 STREAMS s2 s2 s2 $ $ $ $rd XREAD BLOCK 20000 STREAMS s2 s2 s2 $ $ $
wait_for_blocked_clients_count 1
r XADD s2 * new abcd1234 r XADD s2 * new abcd1234
set res [$rd read] set res [$rd read]
assert {[lindex $res 0 0] eq {s2}} assert {[lindex $res 0 0] eq {s2}}
...@@ -401,6 +404,7 @@ start_server { ...@@ -401,6 +404,7 @@ start_server {
r XADD s2 * old abcd1234 r XADD s2 * old abcd1234
set rd [redis_deferring_client] set rd [redis_deferring_client]
$rd XREAD BLOCK 20000 STREAMS s2 s2 s2 $ $ $ $rd XREAD BLOCK 20000 STREAMS s2 s2 s2 $ $ $
wait_for_blocked_clients_count 1
r MULTI r MULTI
r XADD s2 * field one r XADD s2 * field one
r XADD s2 * field two r XADD s2 * field two
...@@ -510,6 +514,7 @@ start_server { ...@@ -510,6 +514,7 @@ start_server {
r del x r del x
set rd [redis_deferring_client] set rd [redis_deferring_client]
$rd XREAD BLOCK 0 STREAMS x 1-18446744073709551615 $rd XREAD BLOCK 0 STREAMS x 1-18446744073709551615
wait_for_blocked_clients_count 1
r XADD x 1-1 f v r XADD x 1-1 f v
r XADD x 1-18446744073709551615 f v r XADD x 1-18446744073709551615 f v
r XADD x 2-1 f v r XADD x 2-1 f v
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment