ZOOKEEPER-4905: Use create2 only when required
If the client is not requesting stat, then the basic create operation is enough.
This makes the client library compatible with servers that do not implement all ZooKeeper protocol features. Concretely, ClickHouse Keeper does not implement create2.
See:
- https://github.com/ClickHouse/ClickHouse/issues/55595#issuecomment-2138066919
Background
I was testing if an application that uses Apache Curator to talk to a ZooKeeper could work with a ClickHouse Keeper instead. This would avoid having to run both ZooKeeper and ClickHouse Keeper in our environment.
With a patch like this I was able to get things to work and I couldn't find any other way to instruct the client library to avoid using create2.
This is mostly a compatibility issue with a third party, so arguably should be fixed there, but since I'm much more familiar with Java than C++ I thought I'd try changing the client library here.
I'm hoping someone more familiar with the codebase can take a look and comment if this is sensible or not.