Comment 2 for bug 1557711

Revision history for this message
Sundaresan Rajangam (srajanga) wrote :

Redis documentation:

*In what order clients are served*

The order is determined by a combination of the client socket file descriptor number and order in which the kernel reports events, so the order is to be considered as unspecified.
However Redis does the following two things when serving clients:
It only performs a single read() system call every time there is something new to read from the client socket, in order to ensure that if we have multiple clients connected, and a few are very demanding clients sending queries at an high rate, other clients are not penalized and will not experience a bad latency figure.
However once new data is read from a client, all the queries contained in the current buffers are processed sequentially. This improves locality and does not need iterating a second time to see if there are clients that need some processing time.

Per the redis documentation, there is no guarantee that the events would be processed in the same order they are received across clients. Therefore, we would need synchronization between UVE update in redis and UVE notify in kafka.