Have a look at PersistentEphemeralNode. It does this. -Jordan
On Nov 11, 2013, at 11:20 PM, Senecal, Shaun | Shaun | BDD <[email protected]> wrote: > Hi, > > I have some code that needs to be able to recreate ephemeral nodes and reset > watches after a session expiry. The approach currently taken is to keep > track of all nodes that need to be recreated and all watches that need to be > reset, then use a ConnectionStateListener to trigger the recovery process > when a RECONNECTED event is received after a LOST event. It has been a > painful process getting this to work, because I want the logic to be able to > survive issues that occur DURING the recovery process as well. > > While the current implementation seems to be working, I'm left feeling that > there has to be a better way to do this. What is the "best practice" > approach? > > I came across this link > (https://listserv.netflix.com/pipermail/curator-users/2012-June/000068.html) > implying that you shouldn't recreate ephemeral nodes in a > ConnectionStateListener, and instead should add a watch to each node which > recreates the node when NodeDeleted or Expired is received. I have tested > this solution and it appears to work. The only place I see this method > getting really complicated is if I need to set watches (ie getData()) on > ephemeral nodes which I want to be reset after an expiry since I would need > to worry about ensuring the ephemeral node is recreated before attempting to > reset the watch. Is this considered the best practice? > > > > Thanks, > > Shaun
