As I was implementing read-only mode in the Python client based on the Java client patch, I noticed a rather odd naming for the error you get if you send a modification command to a read-only server...NotReadOnlyException.
Why the sudden change in error context?
For reference, here's some of the other errors that Zookeeper may return when making an API call:
So the explanation for these errors are consistent, "your API call cannot be completed because of this state on the server". Personally, I'm a huge fan of consistency in an API, so these are all great. But then with NotReadOnly, we have an error that is not referring to the state of the server (that it *is* ReadOnly), but one that refers to the semantics of the API call itself. Given all the other errors, I was really expecting the server to throw a ReadOnly error indicating your call cannot be completed due to that state on the server (like the others).
Was there a reason for the context switch in error naming? I understand given its been merged in for almost 2 years now that there's unlikely to be any switch to make it consistent in context with the other errors, but it might be nice for future feature additions to try and document or enforce better consistency in the API.