Package org.apache.storm.cluster
Class ZKStateStorage
- java.lang.Object
-
- org.apache.storm.cluster.ZKStateStorage
-
- All Implemented Interfaces:
Closeable,AutoCloseable,IStateStorage
public class ZKStateStorage extends Object implements IStateStorage
-
-
Constructor Summary
Constructors Constructor Description ZKStateStorage(Map<String,Object> conf, Map<String,Object> authConf, ClusterStateContext context)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidadd_listener(org.apache.storm.shade.org.apache.curator.framework.state.ConnectionStateListener listener)Add a StateStorageListener to the connection.voidclose()Close the connection to the data store.Stringcreate_sequential(String path, byte[] data, List<org.apache.storm.shade.org.apache.zookeeper.data.ACL> acls)Path will be appended with a monotonically increasing integer, a new node will be created there, and data will be put at that node.voiddelete_node(String path)Deletes the node at a given path, and any child nodes that may exist.voiddelete_node_blobstore(String path, String nimbusHostPortInfo)Allows us to delete the znodes within /storm/blobstore/key_name whose znodes start with the corresponding nimbusHostPortInfo.voiddelete_worker_hb(String path)Deletes the heartbeat at a given path, and any child nodes that may exist.List<String>get_children(String path, boolean watch)Get a list of paths of all the child nodes which exist immediately under path.byte[]get_data(String path, boolean watch)Get the data from the node at pathVersionedData<byte[]>get_data_with_version(String path, boolean watch)Get the data at the node along with its version.Integerget_version(String path, boolean watch)Gets the 'version' of the node at a path.byte[]get_worker_hb(String path, boolean watch)Get the heartbeat from the node at pathList<String>get_worker_hb_children(String path, boolean watch)Get a list of paths of all the child nodes which exist immediately under path.voidmkdirs(String path, List<org.apache.storm.shade.org.apache.zookeeper.data.ACL> acls)Creates nodes for path and all its parents.booleannode_exists(String path, boolean watch)Check if a node exists and optionally set a watch on the path.Stringregister(ZKStateChangedCallback callback)Registers a callback function that gets called when CuratorEvents happen.voidset_data(String path, byte[] data, List<org.apache.storm.shade.org.apache.zookeeper.data.ACL> acls)Set the value of the node at path to data.voidset_ephemeral_node(String path, byte[] data, List<org.apache.storm.shade.org.apache.zookeeper.data.ACL> acls)Creates an ephemeral node at path.voidset_worker_hb(String path, byte[] data, List<org.apache.storm.shade.org.apache.zookeeper.data.ACL> acls)Write a worker heartbeat at the path.voidsync_path(String path)Force consistency on a path.voidunregister(String id)Unregisters a callback function that was registered with register(...).
-
-
-
Method Detail
-
delete_node_blobstore
public void delete_node_blobstore(String path, String nimbusHostPortInfo)
Description copied from interface:IStateStorageAllows us to delete the znodes within /storm/blobstore/key_name whose znodes start with the corresponding nimbusHostPortInfo.- Specified by:
delete_node_blobstorein interfaceIStateStorage- Parameters:
path- /storm/blobstore/key_namenimbusHostPortInfo- Contains the host port information of a nimbus node.
-
register
public String register(ZKStateChangedCallback callback)
Description copied from interface:IStateStorageRegisters a callback function that gets called when CuratorEvents happen.- Specified by:
registerin interfaceIStateStorage- Parameters:
callback- is a clojure IFn that accepts the type - translated to clojure keyword as in zookeeper - and the path: (callback type path)- Returns:
- is an id that can be passed to unregister(...) to unregister the callback.
-
unregister
public void unregister(String id)
Description copied from interface:IStateStorageUnregisters a callback function that was registered with register(...).- Specified by:
unregisterin interfaceIStateStorage- Parameters:
id- is the String id that was returned from register(...).
-
create_sequential
public String create_sequential(String path, byte[] data, List<org.apache.storm.shade.org.apache.zookeeper.data.ACL> acls)
Description copied from interface:IStateStoragePath will be appended with a monotonically increasing integer, a new node will be created there, and data will be put at that node.- Specified by:
create_sequentialin interfaceIStateStorage- Parameters:
path- The path that the monotonically increasing integer suffix will be added to.data- The data that will be written at the suffixed path's node.acls- The acls to apply to the path. May be null.- Returns:
- The path with the integer suffix appended.
-
mkdirs
public void mkdirs(String path, List<org.apache.storm.shade.org.apache.zookeeper.data.ACL> acls)
Description copied from interface:IStateStorageCreates nodes for path and all its parents. Path elements are separated by a "/", as in *nix filesystem notation. Equivalent to mkdir -p in *nix.- Specified by:
mkdirsin interfaceIStateStorage- Parameters:
path- The path to create, along with all its parents.acls- The acls to apply to the path. May be null.
-
delete_node
public void delete_node(String path)
Description copied from interface:IStateStorageDeletes the node at a given path, and any child nodes that may exist.- Specified by:
delete_nodein interfaceIStateStorage- Parameters:
path- The path to delete
-
set_ephemeral_node
public void set_ephemeral_node(String path, byte[] data, List<org.apache.storm.shade.org.apache.zookeeper.data.ACL> acls)
Description copied from interface:IStateStorageCreates an ephemeral node at path. Ephemeral nodes are destroyed by the store when the client disconnects.- Specified by:
set_ephemeral_nodein interfaceIStateStorage- Parameters:
path- The path where a node will be created.data- The data to be written at the node.acls- The acls to apply to the path. May be null.
-
get_version
public Integer get_version(String path, boolean watch) throws Exception
Description copied from interface:IStateStorageGets the 'version' of the node at a path. Optionally sets a watch on that node. The version should increase whenever a write happens.- Specified by:
get_versionin interfaceIStateStorage- Parameters:
path- The path to get the version of.watch- Whether or not to set a watch on the path. Watched paths emit events which are consumed by functions registered with the register method. Very useful for catching updates to nodes.- Returns:
- The integer version of this node.
- Throws:
Exception
-
node_exists
public boolean node_exists(String path, boolean watch)
Description copied from interface:IStateStorageCheck if a node exists and optionally set a watch on the path.- Specified by:
node_existsin interfaceIStateStorage- Parameters:
path- The path to check for the existence of a node.watch- Whether or not to set a watch on the path. Watched paths emit events which are consumed by functions registered with the register method. Very useful for catching updates to nodes.- Returns:
- Whether or not a node exists at path.
-
get_children
public List<String> get_children(String path, boolean watch)
Description copied from interface:IStateStorageGet a list of paths of all the child nodes which exist immediately under path.- Specified by:
get_childrenin interfaceIStateStorage- Parameters:
path- The path to look underwatch- Whether or not to set a watch on the path. Watched paths emit events which are consumed by functions registered with the register method. Very useful for catching updates to nodes.- Returns:
- list of string paths under path.
-
close
public void close()
Description copied from interface:IStateStorageClose the connection to the data store.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein interfaceIStateStorage
-
set_data
public void set_data(String path, byte[] data, List<org.apache.storm.shade.org.apache.zookeeper.data.ACL> acls)
Description copied from interface:IStateStorageSet the value of the node at path to data.- Specified by:
set_datain interfaceIStateStorage- Parameters:
path- The path whose node we want to set.data- The data to put in the node.acls- The acls to apply to the path. May be null.
-
get_data
public byte[] get_data(String path, boolean watch)
Description copied from interface:IStateStorageGet the data from the node at path- Specified by:
get_datain interfaceIStateStorage- Parameters:
path- The path to look underwatch- Whether or not to set a watch on the path. Watched paths emit events which are consumed by functions registered with the register method. Very useful for catching updates to nodes.- Returns:
- The data at the node.
-
get_data_with_version
public VersionedData<byte[]> get_data_with_version(String path, boolean watch)
Description copied from interface:IStateStorageGet the data at the node along with its version. Data is returned in an Map with the keys data and version.- Specified by:
get_data_with_versionin interfaceIStateStorage- Parameters:
path- The path to look underwatch- Whether or not to set a watch on the path. Watched paths emit events which are consumed by functions registered with the register method. Very useful for catching updates to nodes.- Returns:
- the data with a version
-
set_worker_hb
public void set_worker_hb(String path, byte[] data, List<org.apache.storm.shade.org.apache.zookeeper.data.ACL> acls)
Description copied from interface:IStateStorageWrite a worker heartbeat at the path.- Specified by:
set_worker_hbin interfaceIStateStorage- Parameters:
path- The path whose node we want to set.data- The data to put in the node.acls- The acls to apply to the path. May be null.
-
get_worker_hb
public byte[] get_worker_hb(String path, boolean watch)
Description copied from interface:IStateStorageGet the heartbeat from the node at path- Specified by:
get_worker_hbin interfaceIStateStorage- Parameters:
path- The path to look underwatch- Whether or not to set a watch on the path. Watched paths emit events which are consumed by functions registered with the register method. Very useful for catching updates to nodes.- Returns:
- The heartbeat at the node.
-
get_worker_hb_children
public List<String> get_worker_hb_children(String path, boolean watch)
Description copied from interface:IStateStorageGet a list of paths of all the child nodes which exist immediately under path. This is similar to get_children, but must be used for any nodes- Specified by:
get_worker_hb_childrenin interfaceIStateStorage- Parameters:
path- The path to look underwatch- Whether or not to set a watch on the path. Watched paths emit events which are consumed by functions registered with the register method. Very useful for catching updates to nodes.- Returns:
- list of string paths under path.
-
delete_worker_hb
public void delete_worker_hb(String path)
Description copied from interface:IStateStorageDeletes the heartbeat at a given path, and any child nodes that may exist.- Specified by:
delete_worker_hbin interfaceIStateStorage- Parameters:
path- The path to delete.
-
add_listener
public void add_listener(org.apache.storm.shade.org.apache.curator.framework.state.ConnectionStateListener listener)
Description copied from interface:IStateStorageAdd a StateStorageListener to the connection.- Specified by:
add_listenerin interfaceIStateStorage- Parameters:
listener- A StateStorageListener to handle changing cluster state events.
-
sync_path
public void sync_path(String path)
Description copied from interface:IStateStorageForce consistency on a path. Any writes committed on the path before this call will be completely propagated when it returns.- Specified by:
sync_pathin interfaceIStateStorage- Parameters:
path- The path to synchronize.
-
-