Thanks all of you and Ted Yu really explain what I want. We should discuss more with Honghua to specify our requirement. ZK is the nice system for many recipes. if HBase uses it, we should use properly and reasonably. Moreover, this would help to develop zk in the best case ;-)
________________________________________ From: Ted Dunning [[email protected]] Sent: Saturday, January 18, 2014 6:41 AM To: [email protected] Subject: Re: Where are we in ZOOKEEPER-1416 My reference here is to the comments a ways up thread. Kishore and I clearly agree completely that idempotency and dealing with the state as it is right now are the keys to correct design. On Fri, Jan 17, 2014 at 2:14 PM, Ted Dunning <[email protected]> wrote: > > That comment indicates a lack of understanding of ZK, not a bug in ZK. > > You don't lose state transitions if you read new state at the same time > you set the new watch. > > Likewise, it is simply a product of bad design to have a problem with > asynchronous notification. Changes on other machines *are* asynchronous so > anybody who can't handle that is inherently denying reality. If you want > to inject the notifications into a sequential view of an event stream, that > is trivial to do. > > Systems that depend on transition notification are generally not as robust > as systems that depend on current state. Building a cluster manager works > better if the master is notified that a change has happened, but then > simply deals with the situation as it stands. > > As an analog, imagine that you have a system that shows a number x and a > second system that is supposed to show an echo of that number. > > Design A is notified of changes to x in the form of deltas. If there is > ever an error in handling events, the echo will be off forever. The error > that causes the delta to be dropped could be notification or a coding error > or a misunderstanding of how parallel systems work. For instance, the > InterruptedException might not be handled right. > > Design B is notified of changes to x and whenever a change happens, the > second system simply goes and reads the new state. Errors will be quickly > corrected. > > It sounds like the original poster is trying to build something like > Design A when they should be building Design B. > > > > > > On Fri, Jan 17, 2014 at 12:34 PM, Ted Yu <[email protected]> wrote: > >> HBASE-5487 is also related. >> >> The discussion there is very long. Below is an excerpt from Honghua: >> >> too many tricky scenarios/bugs due to ZK watch is one-time(which can >> result >> in missed state transition) and the notification/process is >> asyncronous(which can lead to delayed/non-update-to-date state in master >> memory). >> >> Cheers >> >> >> On Fri, Jan 17, 2014 at 11:25 AM, Ted Yu <[email protected]> wrote: >> >> > Hi, Flavio: >> > HBASE-8365 is one such case. >> > >> > Let me search around for other related discussion. >> > >> > >> > On Fri, Jan 17, 2014 at 11:17 AM, Flavio Junqueira < >> [email protected]>wrote: >> > >> >> Hi Ted, >> >> >> >> Can you provide more detail on how the precise deltas could make it >> more >> >> robust? >> >> >> >> -Flavio >> >> >> >> -----Original Message----- >> >> From: "Ted Yu" <[email protected]> >> >> Sent: 17/01/2014 17:25 >> >> To: "[email protected]" <[email protected]> >> >> Subject: Re: Where are we in ZOOKEEPER-1416 >> >> >> >> Having the ability to know exact deltas would help make HBase region >> >> assignment more robust. >> >> >> >> Cheers >> >> >> >> >> >> >> >> On Fri, Jan 17, 2014 at 9:13 AM, kishore g <[email protected]> >> wrote: >> >> >> >> > I agree with you, I like the side effect and in fact I would prefer >> to >> >> have >> >> > one notification for all changes under a parent node. >> >> > >> >> > However, Hao is probably asking for ability to know exact deltas. >> >> > >> >> > >> >> > On Fri, Jan 17, 2014 at 8:15 AM, FPJ <[email protected]> wrote: >> >> > >> >> > > We don't need to have a mapping between every change and a >> >> notification. >> >> > If >> >> > > there are 2+ changes between notifications, you'll be able to >> observe >> >> it >> >> > by >> >> > > reading the ZK state. In fact, one nice side-effect is that we >> reduce >> >> the >> >> > > number of notifications when there are many concurrent changes. >> >> > > >> >> > > The only situation I can see it being necessary is the one in >> which we >> >> > need >> >> > > to know precisely the changes and we haven't cached a previous >> >> version of >> >> > > the state. >> >> > > >> >> > > -Flavio >> >> > > >> >> > > > -----Original Message----- >> >> > > > From: kishore g [mailto:[email protected]] >> >> > > > Sent: 17 January 2014 16:06 >> >> > > > To: [email protected] >> >> > > > Subject: Re: Where are we in ZOOKEEPER-1416 >> >> > > > >> >> > > > I think Hao is pointing out that there is no way to see every >> change >> >> > > > (delta) that happened to a znode. Consider 2 changes A,B in quick >> >> > > > succession. When client gets notified of A and before setting the >> >> watch >> >> > > the >> >> > > > change B has occurred on the server side. This means the client >> >> cannot >> >> > > know >> >> > > > the delta A. Client can only read the state after change B is >> >> applied. >> >> > > > >> >> > > > Implementing the concept of Persistent watcher guarantees that >> >> client >> >> > if >> >> > > > notified after every change. >> >> > > > >> >> > > > This is a nice to have feature but I dont understand the >> >> requirement in >> >> > > Hbase >> >> > > > where this is needed. Hao, can you shed more light on how this >> >> would be >> >> > > > useful for HBase (to act like state machine) >> >> > > > >> >> > > > thanks, >> >> > > > Kishore G >> >> > > > >> >> > > > >> >> > > > >> >> > > > >> >> > > > >> >> > > > >> >> > > > >> >> > > > >> >> > > > On Fri, Jan 17, 2014 at 5:18 AM, FPJ <[email protected]> >> wrote: >> >> > > > >> >> > > > > But you don't really miss events, you'll see them when you read >> >> the >> >> > ZK >> >> > > > > state. If you follow the pattern I described, you're supposed >> to >> >> > > > > observe all changes. Perhaps I'm missing some concrete use case >> >> you >> >> > > > > have mind. >> >> > > > > >> >> > > > > -Flavio >> >> > > > > >> >> > > > > > -----Original Message----- >> >> > > > > > From: 陈迪豪 [mailto:[email protected]] >> >> > > > > > Sent: 17 January 2014 13:03 >> >> > > > > > To: [email protected] >> >> > > > > > Subject: RE: Where are we in ZOOKEEPER-1416 >> >> > > > > > >> >> > > > > > No, it's not complicated. But for the people who don't >> >> understand >> >> > zk >> >> > > > > deeply, >> >> > > > > > they would easily ignore the fact that they would miss >> events in >> >> > > > > > some >> >> > > > > way. >> >> > > > > > Moreover, I think providing persistent watch is good for >> >> developers >> >> > > > > > to >> >> > > > > build >> >> > > > > > the "state-machine" application. Actually, HBase suffer from >> >> > missing >> >> > > > > > the intermediate state when use zk to store the data. >> >> > > > > > >> >> > > > > > If the feature is implemented, I would like to see the patch >> and >> >> > > > > > consider >> >> > > > > if it >> >> > > > > > can be used for us. >> >> > > > > > >> >> > > > > > ________________________________________ >> >> > > > > > From: Flavio Junqueira [[email protected]] >> >> > > > > > Sent: Friday, January 17, 2014 8:12 PM >> >> > > > > > To: [email protected] >> >> > > > > > Subject: RE: Where are we in ZOOKEEPER-1416 >> >> > > > > > >> >> > > > > > My take is that persistent subscriptions add complexity and >> are >> >> not >> >> > > > > strictly >> >> > > > > > necessary. You can follow this pattern of setting a watch, >> >> reading >> >> > > > > > the >> >> > > > > state >> >> > > > > > upon a notification and setting a new watch. Why do you feel >> >> that's >> >> > > > > > complicated? >> >> > > > > > >> >> > > > > > -Flavio >> >> > > > > > >> >> > > > > > -----Original Message----- >> >> > > > > > From: 陈迪豪 [mailto:[email protected]] >> >> > > > > > Sent: Friday, January 17, 2014 3:13 AM >> >> > > > > > To: [email protected] >> >> > > > > > Subject: Where are we in ZOOKEEPER-1416 >> >> > > > > > >> >> > > > > > >> >> > > > > > >> >> > > > > > Persistent watch and implementing the feature to act like >> "state >> >> > > > machine" >> >> > > > > > which is mentioned in >> >> > > > > > ZOOKEEPER-153< >> https://issues.apache.org/jira/browse/ZOOKEEPER- >> >> > > > 153>, >> >> > > > > > would be great for ZooKeeper user. I think HBase would like >> to >> >> know >> >> > > > > > all >> >> > > > > the >> >> > > > > > change in zk rather than missing kind of events. >> >> > > > > > >> >> > > > > > So, would we continue developing these features? It's also a >> >> little >> >> > > > > > complicated to develop with zk and I think there're lots of >> >> things >> >> > > > > > to >> >> > > > > improve. >> >> > > > > >> >> > > > > >> >> > > > > >> >> > > >> >> > > >> >> > >> >> >> > >> > >> > >
