Implications of require master = false

I am setting up an EventStore cluster, and would ideally want to have the client be as simple as possible, i.e. not having to know about the cluster structure explicitly and instead just being given a DNS entry resolving to the IP of a currently running EventStore instance (master or not).

To make this possible, I understand that I have to set require master = false, as the client may be connected to what is currently the master, or not.

What are the implications of running in this mode for integrity/atomicity? I understand that a read from one node may be behind, but is there a risk of the events between event store nodes actually diverging / data getting lost?



Writes will still be forwarded to the master.

So I guess what I’m trying to understand is when you would require a direct connection to the master node (and why in the Java client, this is the default).

For example, in a 3 node cluster, is there any risk of split brain if you’re connected to one node that has lost the connection to the others? I assume that in that situation, the one node would realize that it doesn’t have quorum and reject requests?

It will timeout requests yes (it won't be able to forward).

The reason its the default is that forwarding introduces an extra hop
than the client talking to the master. This can affect latency.