John Vines 2013-06-21, 22:13
I think this code is just to avoid race conditions between the master and
The tserver will create a node X and then create an ephemeral node Y under
X. Y is the lock. So the code helps avoid the following situation.
* tserver creates X
* master sees X has no children/locks and deletes X
* tserver tries to create Y as a child of X and fails because X does not
It seems like above situation may have caused some sort of problem, but I
can not remember. So I think the delayed delete may have been added to
avoid a problem. I can try to dig up tickets if you need more info.
On Fri, Jun 21, 2013 at 6:13 PM, John Vines <[EMAIL PROTECTED]> wrote:
> Eric probably knows the answer to this, but if anyone else can chime in it
> would be great.
> LiveTServerSet is what is used to maintain the set of all functional
> tservers the master is aware of. Part of the logic for it is when it finds
> that a znode for a tserver (tserver lock) goes missing, it will mark is as
> lockless as well as reporting it as doomed to the master. The latter action
> has the master try to phase it out of everything, etc.
> The lockless part of it though seems a little foreign, but it may be
> because my branch has changed substantially around ZooCache. It appears to
> wait 10 minutes and if it is still lockless it will delete the lock
> explicitly. But isn't the lock already gone? Or is the lock znode empty vs.
John Vines 2013-06-22, 03:32