mirror of
https://github.com/fluencelabs/redis
synced 2025-04-01 23:31:03 +00:00
Fix client unblocking for XREADGROUP, issue #4978.
We unblocked the client too early, when the group name object was no longer valid in client->bpop, so propagating XCLAIM later in streamPropagateXCLAIM() deferenced a field already set to NULL.
This commit is contained in:
parent
b136502d0f
commit
34bd44187a
@ -398,12 +398,6 @@ void handleClientsBlockedOnKeys(void) {
|
|||||||
1);
|
1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Note that after we unblock the client, 'gt'
|
|
||||||
* and other receiver->bpop stuff are no longer
|
|
||||||
* valid, so we must do the setup above before
|
|
||||||
* this call. */
|
|
||||||
unblockClient(receiver);
|
|
||||||
|
|
||||||
/* Emit the two elements sub-array consisting of
|
/* Emit the two elements sub-array consisting of
|
||||||
* the name of the stream and the data we
|
* the name of the stream and the data we
|
||||||
* extracted from it. Wrapped in a single-item
|
* extracted from it. Wrapped in a single-item
|
||||||
@ -419,6 +413,12 @@ void handleClientsBlockedOnKeys(void) {
|
|||||||
streamReplyWithRange(receiver,s,&start,NULL,
|
streamReplyWithRange(receiver,s,&start,NULL,
|
||||||
receiver->bpop.xread_count,
|
receiver->bpop.xread_count,
|
||||||
0, group, consumer, 0, &pi);
|
0, group, consumer, 0, &pi);
|
||||||
|
|
||||||
|
/* Note that after we unblock the client, 'gt'
|
||||||
|
* and other receiver->bpop stuff are no longer
|
||||||
|
* valid, so we must do the setup above before
|
||||||
|
* this call. */
|
||||||
|
unblockClient(receiver);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user