Interface CreateBuilderMain
- All Superinterfaces:
ACLable<BackgroundPathAndBytesable<String>>
,ACLBackgroundPathAndBytesable<String>
,ACLCreateModeBackgroundPathAndBytesable<String>
,Backgroundable<ErrorListenerPathAndBytesable<String>>
,BackgroundPathAndBytesable<String>
,Compressible<CreateBackgroundModeStatACLable>
,CreateModable<ACLBackgroundPathAndBytesable<String>>
,ParentACLable<BackgroundPathAndBytesable<String>>
,PathAndBytesable<String>
,Statable<CreateProtectACLCreateModePathAndBytesable<String>>
- All Known Subinterfaces:
CreateBuilder
,CreateBuilder2
- All Known Implementing Classes:
CreateBuilderImpl
-
Method Summary
Modifier and TypeMethodDescriptionCauses any parent nodes to get created usingCreateMode.CONTAINER
if they haven't already been.Causes any parent nodes to get created if they haven't already beenDeprecated.this has been generalized to support all create modes.Hat-tip to https://github.com/sbridges for pointing this outMethods inherited from interface org.apache.curator.framework.api.Backgroundable
inBackground, inBackground, inBackground, inBackground, inBackground, inBackground
Methods inherited from interface org.apache.curator.framework.api.Compressible
compressed
Methods inherited from interface org.apache.curator.framework.api.CreateModable
withMode
Methods inherited from interface org.apache.curator.framework.api.ParentACLable
withACL
Methods inherited from interface org.apache.curator.framework.api.PathAndBytesable
forPath, forPath
Methods inherited from interface org.apache.curator.framework.api.Statable
storingStatIn
-
Method Details
-
creatingParentsIfNeeded
ProtectACLCreateModeStatPathAndBytesable<String> creatingParentsIfNeeded()Causes any parent nodes to get created if they haven't already been- Returns:
- this
-
creatingParentContainersIfNeeded
ProtectACLCreateModeStatPathAndBytesable<String> creatingParentContainersIfNeeded()Causes any parent nodes to get created usingCreateMode.CONTAINER
if they haven't already been. IMPORTANT NOTE: container creation is a new feature in recent versions of ZooKeeper. If the ZooKeeper version you're using does not support containers, the parent nodes are created as ordinary PERSISTENT nodes.- Returns:
- this
-
withProtectedEphemeralSequential
Deprecated.this has been generalized to support all create modes. Instead, use:client.create().withProtection().withMode(CreateMode.EPHEMERAL_SEQUENTIAL)...
- Returns:
- this
-
withProtection
ACLCreateModeStatBackgroundPathAndBytesable<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 40 characters string that is the concatenation of
- "_c_"
- Canonical text representation of a random generated UUID as produced by
UUID.toString()
- '-'
- Returns:
- this
-