org.apache.curator.framework.api
Interface CreateBuilder

All Superinterfaces:
ACLable<BackgroundPathAndBytesable<String>>, ACLBackgroundPathAndBytesable<String>, ACLCreateModeBackgroundPathAndBytesable<String>, Backgroundable<PathAndBytesable<String>>, BackgroundPathAndBytesable<String>, Compressible<CreateBackgroundModeACLable>, CreateModable<ACLBackgroundPathAndBytesable<String>>, PathAndBytesable<String>

public interface CreateBuilder
extends BackgroundPathAndBytesable<String>, CreateModable<ACLBackgroundPathAndBytesable<String>>, ACLCreateModeBackgroundPathAndBytesable<String>, Compressible<CreateBackgroundModeACLable>


Method Summary
 ProtectACLCreateModePathAndBytesable<String> creatingParentsIfNeeded()
          Causes any parent nodes to get created if they haven't already been
 ACLPathAndBytesable<String> withProtectedEphemeralSequential()
          Deprecated. this has been generalized to support all create modes. Instead, use:
     client.create().withProtection().withMode(CreateMode.PERSISTENT_SEQUENTIAL)...
 
 ACLCreateModeBackgroundPathAndBytesable<String> withProtection()
           Hat-tip to https://github.com/sbridges for pointing this out
 
Methods inherited from interface org.apache.curator.framework.api.ACLable
withACL
 
Methods inherited from interface org.apache.curator.framework.api.Backgroundable
inBackground, inBackground, inBackground, inBackground, inBackground, inBackground
 
Methods inherited from interface org.apache.curator.framework.api.PathAndBytesable
forPath, forPath
 
Methods inherited from interface org.apache.curator.framework.api.CreateModable
withMode
 
Methods inherited from interface org.apache.curator.framework.api.Compressible
compressed
 

Method Detail

creatingParentsIfNeeded

ProtectACLCreateModePathAndBytesable<String> creatingParentsIfNeeded()
Causes any parent nodes to get created if they haven't already been

Returns:
this

withProtectedEphemeralSequential

ACLPathAndBytesable<String> withProtectedEphemeralSequential()
Deprecated. this has been generalized to support all create modes. Instead, use:
     client.create().withProtection().withMode(CreateMode.PERSISTENT_SEQUENTIAL)...
 

Returns:
this

withProtection

ACLCreateModeBackgroundPathAndBytesable<String> withProtection()

Hat-tip to https://github.com/sbridges for pointing this out

It turns out there is an edge case that exists when creating sequential-ephemeral nodes. The creation can succeed on the server, but the server can crash before the created node name is returned to the client. However, the ZK session is still valid so the ephemeral node is not deleted. Thus, there is no way for the client to determine what node was created for them.

Even without sequential-ephemeral, however, the create can succeed on the sever but the client (for various reasons) will not know it.

Putting the create builder into protection mode works around this. The name of the node that is created is prefixed with a GUID. If node creation fails the normal retry mechanism will occur. On the retry, the parent path is first searched for a node that has the GUID in it. If that node is found, it is assumed to be the lost node that was successfully created on the first try and is returned to the caller.

Returns:
this


Copyright © 2011–2014 The Apache Software Foundation. All rights reserved.