• A
    Streams: send an error to consumers blocked on non-existing group. · a71e8148
    antirez 提交于
    To detect when the group (or the whole key) is destroyed to send an
    error to the consumers blocked in such group is a problem, so we leave
    the consumers listening, the sysadmin is free to create or destroy
    groups assuming she/he knows what to do. However a client may be blocked
    in a given consumer group, that is later destroyed. Then the stream
    receives new elements. In that case there is no sane behavior to serve
    the consumer... but to report an error about the group no longer
    existing.
    
    More about detecting this synchronously and why it is not done:
    
    1. Normally we don't do that, we leave clients blocked for other data
    types such as lists.
    
    2. When we free a stream object there is no longer information about
    what was the key it was associated with, so while destroying the
    consumer groups we miss the info to unblock the clients in that moment.
    
    3. Objects can be reclaimed in other threads where it is no longer safe
    to do client operations.
    a71e8148
blocked.c 25.4 KB