In the zookeeper book it says:
When a client creates a ZooKeeper handle using a specific language binding, it establishes a session with the service. The client initially connects to any server in the ensemble, and only to a single server. It uses a TCP connection to communicate with the server, but the session may be moved to a different server if the client has not heard from its current server for some time. Moving a session to a different server is handled transparently by the ZooKeeper client library.
And then it proceeds to talk about the FIFO order guarantees for a single session.
In cases when zookeeper moves the session transparently, does it preserve the order?