Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
07142f03
Commit
07142f03
authored
May 31, 2018
by
zhaozhao.zz
Committed by
antirez
Jun 01, 2018
Browse files
ZPOP: unblock multiple clients in right way
parent
733348bb
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/blocked.c
View file @
07142f03
...
...
@@ -314,8 +314,9 @@ void handleClientsBlockedOnKeys(void) {
if
(
de
)
{
list
*
clients
=
dictGetVal
(
de
);
int
numclients
=
listLength
(
clients
);
unsigned
long
zcard
=
zsetLength
(
o
);
while
(
numclients
--
)
{
while
(
numclients
--
&&
zcard
)
{
listNode
*
clientnode
=
listFirst
(
clients
);
client
*
receiver
=
clientnode
->
value
;
...
...
@@ -332,6 +333,7 @@ void handleClientsBlockedOnKeys(void) {
?
ZSET_MIN
:
ZSET_MAX
;
unblockClient
(
receiver
);
genericZpopCommand
(
receiver
,
&
rl
->
key
,
1
,
where
,
1
,
NULL
);
zcard
--
;
/* Replicate the command. */
robj
*
argv
[
2
];
...
...
src/t_zset.c
View file @
07142f03
...
...
@@ -3216,9 +3216,9 @@ void blockingGenericZpopCommand(client *c, int where) {
return
;
}
else
{
if
(
zsetLength
(
o
)
!=
0
)
{
/* Non empty zset, this is like a normal Z
[REV]POP
. */
/* Non empty zset, this is like a normal Z
POP[MIN|MAX]
. */
genericZpopCommand
(
c
,
&
c
->
argv
[
j
],
1
,
where
,
1
,
NULL
);
/* Replicate it as an Z
[REV]POP
instead of BZ
[REV]POP
. */
/* Replicate it as an Z
POP[MIN|MAX]
instead of BZ
POP[MIN|MAX]
. */
rewriteClientCommandVector
(
c
,
2
,
where
==
ZSET_MAX
?
shared
.
zpopmax
:
shared
.
zpopmin
,
c
->
argv
[
j
]);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment