On Fri, May 18, 2012 at 1:55 PM, Joe Gamache <[email protected]>wrote:
> ... > > I have a one process that is trying to create some "work" that will be > represented via a ZNode. A large number of other processes are looking > for work. The node that represents the work will be sequential. Most > importantly, it will be incomplete until the structure below it is > completed. That is easy. Just create the lower structures first. If the upper structure needs to have an indicator that it is under construction, just set a bit inside it using the atomic update method. Or create a separate node to do leader election. > Thus, I would like to be able to create that node and lock it atomically > OR create the entire structure below it atomically. Remember ZK doesn't do locks. You can create the node with the "under-construction" bit set. Or you can use a multi to create the parent and children simultaneously. You can create the parent with references to a version in another node by getting the version of the parent, getting the versions of the children, updating the parent with the version specified. Retry with backoff on failure. I would like to avoid hacking in another parallel node structure solely for > the purpose of locking (as there will be many 1000's of these created) > As you like. This can be handled pretty easily. Setting watches on the release of a node is a bit trickier, but can be handled as well. > > All I am really wondering is can Zookeeper do this? If not, I can find > alternate ways around - they just seem less elegant to me. > It can.
