zookeeper-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From chao chu <chuchao...@gmail.com>
Subject Re: Do we need a 'sync' to make sure no stale ephemeral nodes observed (created by exipred session)
Date Tue, 02 Jul 2013 17:48:09 GMT
Hi Flavio,

Thanks for your reply. I think that's the exact thing I want to confirm:
when we got the 'NodeDeleted' event due to session expiration, we shouldn't
see the node anymore by calling 'getChildren' of the parent node.

another related issue just came to my mind about the recipe to implement
leader election, suppose the following sequences:
1. one participant (A) is watching the node (x) just before it
2. the node x that A was watching got deleted (due to session expiration or
whatever)
3. once received the 'NodeDeleted' event, A should check what's the current
node (the node now just before it) it should watch. However, these are two
separate operations: 1) get all the child nodes, get the node (y) with the
sequence just before A 2) A sets a watch on node y. between *getting the
nodes* and *setting the watch on y*, the node y might also be got deleted.

this should be a rare case and we can retry several times to lower the
chance for this to happen further. But is there a better way to handle this?


On Wed, Jul 3, 2013 at 12:54 AM, Flavio Junqueira <fpjunqueira@yahoo.com>wrote:

> Hi ChuChao,
>
> I'm not entirely sure I understand the question, so please send some more
> info if this is not the answer you're looking for. In general you don't
> have
> to sync because the events are delivered in order, including the
> notifications for say deleted znodes due to session expiration. An
> exception
> to this rule is the case in which two clients talk directly to each other
> and a client needs to make sure that it doesn't read a stale version
> compared to the other client. But, this is not the case for you, then you
> don't need to sync, just watch for the znode being deleted and react
> accordingly when you receive the notification.
>
> -Flavio
>
>
>
> -----Original Message-----
> From: chao chu [mailto:chuchao333@gmail.com]
> Sent: 02 July 2013 17:44
> To: user@zookeeper.apache.org
> Subject: Do we need a 'sync' to make sure no stale ephemeral nodes observed
> (created by exipred session)
>
> we know that for some performance reasons, different clients may have
> slightly different views of znodes, for example, if client A updated node
> a,
> and it let client B to read the node a, client B might still read the old
> data and it need a 'sync' to see the latest.
>
> Do we need to do the same thing when we concern about reading some stale
> ephemeral nodes which are created by some already expired session?
>
> Thanks & Regards,
>
> --
> ChuChao
>
>


-- 
ChuChao

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message