Thanks; I can definitely appreciate that Watchers (or more generally the
idea of chaining async callbacks) is usually a more suitable mechanism than
calling sync().  I've also seen some code patterns in which knowledge of
the expected ZK node version can alleviate the need for doing a sync() as
well -- assuming you have an expected zk node version to do such a check.

~ David

On Thu, Apr 19, 2018 at 5:28 PM Chris Hostetter <hossman_luc...@fucit.org>
wrote:

>
> IIUC, the reason you don't see any calls to sync() is because Solr's use
> of ZK is mostly based on Watchers? ... so we have callback functions to be
> notified anytime something (like leaeders, overseer, cluster state,
> etc...) changes and those calbacks update local copies of that state,
> which other (less zk savy) code can read on demand ... there shouldn't
> be much "polling" of ZK data in Solr that would require syncs?
>
> : Date: Thu, 19 Apr 2018 21:16:41 +0000
> : From: David Smiley <david.w.smi...@gmail.com>
> : Reply-To: dev@lucene.apache.org
> : To: "dev@lucene.apache.org" <dev@lucene.apache.org>
> : Subject: FYI Zookeeper.sync()
> :
> : As I was contemplating how it is that I see some weird behavior while
> : working on SolrCloud stuff could happen, I started to question my basic
> : assumptions.  One assumption I held is that SolrZkClient.getData (which
> : calls  ZooKeeper.getData) would always return the most up to date
> : information from the ZK cluster.  The docs to ZooKeeper.getData say
> nothing
> : on this matter.  If it did work this way, I imagine it would need to talk
> : to at least a majority of the ZK ensemble. Now that I reed the ZK
> : Programmer's guide RE consistency guarantees --
> :
> http://zookeeper.apache.org/doc/r3.4.11/zookeeperProgrammers.html#ch_zkGuarantees
> : I
> : see reads may read stale data and that I can use ZooKeeper.sync() first
> to
> : get the latest.  Okay wow.  Interestingly we don't call this anywhere in
> : our codebase.  With this newfound realization, I think at least one place
> : pertaining to TimeRoutedAliases really wants the most up to date
> : information, so I'll need to add a call to sync.  Of course sync() should
> : be added deliberately not haphazardly; I'm sure it has overhead.
> : --
> : Lucene/Solr Search Committer, Consultant, Developer, Author, Speaker
> : LinkedIn: http://linkedin.com/in/davidwsmiley | Book:
> : http://www.solrenterprisesearchserver.com
> :
>
> -Hoss
> http://www.lucidworks.com/
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
> For additional commands, e-mail: dev-h...@lucene.apache.org
>
> --
Lucene/Solr Search Committer, Consultant, Developer, Author, Speaker
LinkedIn: http://linkedin.com/in/davidwsmiley | Book:
http://www.solrenterprisesearchserver.com

Reply via email to