Thanks for explaining things. I'll just use "/" then :-) If sync() fails, the code I have in mind would simply fail as well (since the subsequent read wouldn't even be reached), which is not a misleading/false result. Maybe you are saying sync would asynchronously fail... okay but then wouldn't the subsequent read fail? If it wouldn't... well that's a shame; what a confusing API! My goal (of course) is to make a specific read operation a quorum operation. It's too bad there isn't a *clear* way to do that correctly.
On Sat, Mar 29, 2025 at 11:12 PM Kezhu Wang <[email protected]> wrote: > Hi, > > Currently, "path" has no meaning in "ZooKeeper.sync()". > ZOOKEEPER-3414[1] proposes to throw "NoNodeException" when "path" does > not exist. But it is not delivered. I used to use "/". > > Regarding the "callback", it is crucial in asynchronous, as > "ZooKeeper.sync" could fail due to connection issues while following > reads could succeed after reconnection. ZOOKEEPER-4747[2] introduces a > synchronous version to ease the callback handle. > > [1]: https://issues.apache.org/jira/browse/ZOOKEEPER-3414 > [2]: https://issues.apache.org/jira/browse/ZOOKEEPER-4747 > > Best, > Kezhu Wang > > On Fri, Mar 28, 2025 at 9:38 PM David Smiley <[email protected]> wrote: > > > > The javadocs on ZooKeeper.sync() are extremely sparse; nobody would > > understand this by only looking at it. I've looked at the programmer's > > guide, which actually explains its use. The callback appears pointless? > > Does the semantics of "sync" apply only to reading the path and its > > children list, or does it apply recursively to descendants beneath this > > path? > > > > ~ David Smiley > > Apache Lucene/Solr Search Developer > > http://www.linkedin.com/in/davidwsmiley >
