Thanks for the detailed explanation, Flavio. Makes sense to me. On Wed, Jun 8, 2016 at 2:38 AM, Flavio Junqueira <[email protected]> wrote:
> Our intention with sync at the time was to have an operation that in > combination with a read gives us linearizable semantics. As it is discussed > in the jira, if there is out-of-band communication, then a client can get a > stale result for a read. The sync op was made async *only* because we > wanted to have the operation open or ongoing while issuing the read. If the > sync is synchronous, then it will have returned by the time you submit the > read. Making the sync call asynchronous clearly doesn't prevent zookeeper > from processing the sync before the read, but it has the advantage of not > blocking the read which is the operation you're really interested in. Also, > even if you're using the sync api for the core operations, you can still > call sync asynchronously and it will have the same effect. > > I don't see a strong reason for adding a synchronous sync, and we should > really encourage the use of asynchronous sync and not have a synchronous > version of sync, but let me know if I'm missing something important. > > -Flavio > > > > On 07 Jun 2016, at 23:49, Marshall McMullen <[email protected]> > wrote: > > > > https://issues.apache.org/jira/browse/ZOOKEEPER-1167 > > > > On Tue, Jun 7, 2016 at 4:46 PM, Michael Han <[email protected]> wrote: > > > >> Hi devs, > >> > >> Currently ZooKeeper::sync() API only has an asynchronous version: > >> > >> public void sync(String > >> < > >> > http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true > >>> > >> path, > >> AsyncCallback.VoidCallback > >> < > >> > https://zookeeper.apache.org/doc/r3.5.1-alpha/api/org/apache/zookeeper/AsyncCallback.VoidCallback.html > >>> > >> cb, > >> Object > >> < > >> > http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true > >>> > >> ctx) > >> > >> Asynchronous sync. Flushes channel between process and leader. > >> > >> Given that all other existing APIs have both sync and async version, > should > >> we also have a synchronous version of the "sync()" API? > >> > >> -- > >> Cheers > >> Michael. > >> > > -- Cheers Michael.
