This requires to introduce a mechanism to monitor the clients (e.g. ping or timeout) and to store in the server state a queue of batches waiting for recovery. When a new batch is requested by a client then the next batch is provided from the recovery queue. Only if the recovery queue is empty the cursor can be moved forward and a new batch can be distributed to a client.