Warning: these are design notes from initial stages of LogCabin and are are probably not relevant any longer.
Append RPCs should be linearizable: the illusion that each operation takes effect instantaneously at some point between its invocation and response. Unlike ZooKeeper, we don't want a "you got disconnected from the leader, I don't know if your request went through, you're on your own" error, because that's not always easy for applications to deal with.
...
This hash table will be cleaned very slowly. If a client talks to a server that is unaware of its client ID, this is because the client has been offline for too long; the client will be instructed to crash.
What about multi-threaded clients or clients doing asynchronous requests?