Behaviours: gen_server, riak_core_broadcast_handler.
metadata_broadcast() = #metadata_broadcast{pkey = metadata_pkey(), obj = metadata_object()}
metadata_context() = dvvset:vector()
abstract datatype: metadata_iterator()
metadata_key() = any()
metadata_modifier() = fun(([metadata_value() | metadata_tombstone()] | undefined) -> metadata_value())
metadata_object() = {metadata, dvvset:clock()}
metadata_pkey() = {metadata_prefix(), metadata_key()}
metadata_prefix() = {binary() | atom(), binary() | atom()}
metadata_tombstone() = '$deleted'
metadata_value() = any()
mm_nodename_opt() = {nodename, term()}
mm_opt() = mm_path_opt() | mm_nodename_opt()
mm_opts() = [mm_opt()]
mm_path_opt() = {data_dir, file:name_all()}
remote_iterator() = #remote_iterator{node = node(), ref = reference(), prefix = metadata_prefix() | atom() | binary()}
| broadcast_data/1 | Deconstructs are broadcast that is sent using riak_core_metadata_manager as the
handling module returning the message id and payload. |
| exchange/1 | Trigger an exchange. |
| get/1 | Reads the value for a prefixed key. |
| get/2 | Same as get/1 but reads the value from Node |
| graft/1 | returns the object associated with the given key and context (message id) if the currently stored version has an equal context. |
| is_stale/1 | Returns false if the update (or a causally newer update) has already been received (stored locally). |
| iterate/1 | advance the iterator by one key, full-prefix or sub-prefix. |
| iterator/0 | Returns a full-prefix iterator: an iterator for all full-prefixes that have keys stored under them When done with the iterator, iterator_close/1 must be called. |
| iterator/1 | Returns a sub-prefix iterator for a given prefix. |
| iterator/2 | Return an iterator for keys stored under a prefix. |
| iterator_close/1 | Closes the iterator. |
| iterator_done/1 | returns true if there are no more keys or prefixes to iterate over. |
| iterator_prefix/1 | return the full-prefix or prefix being iterated by this iterator. |
| iterator_value/1 | return the key and object or the prefix pointed to by the iterator. |
| merge/2 | Merges a remote copy of a metadata record sent via broadcast w/ the local view for the key contained in the message id. |
| merge/3 | same as merge/2 but merges the object on Node |
| put/3 | Sets the value of a prefixed key. |
| remote_iterator/1 | Create an iterator on Node. |
| remote_iterator/2 | Create an iterator on Node. |
| start_link/0 | Same as start_link([]). |
| start_link/1 | Start riak_core_metadadata_manager and link to calling process. |
broadcast_data(Metadata_broadcast::metadata_broadcast()) -> {{metadata_pkey(), metadata_context()}, metadata_object()}
Deconstructs are broadcast that is sent using riak_core_metadata_manager as the
handling module returning the message id and payload.
exchange(Peer::node()) -> {ok, pid()} | {error, term()}
Trigger an exchange
get(PKey::metadata_pkey()) -> metadata_object() | undefined
Reads the value for a prefixed key. If the value does not exist undefined is
returned. otherwise a Dotted Version Vector Set is returned. When reading the value
for a subsequent call to put/3 the context can be obtained using
riak_core_metadata_object:context/1. Values can obtained w/ riak_core_metadata_object:values/1.
get(Node::node(), PKey::metadata_pkey()) -> metadata_object() | undefined
Same as get/1 but reads the value from Node
graft(X1::{metadata_pkey(), metadata_context()}) -> stale | {ok, metadata_object()} | {error, term()}
returns the object associated with the given key and context (message id) if the currently stored version has an equal context. otherwise stale is returned. because it assumed that a grafted context can only be causally older than the local view a stale response means there is another message that subsumes the grafted one
is_stale(X1::{metadata_pkey(), metadata_context()}) -> boolean()
Returns false if the update (or a causally newer update) has already been received (stored locally).
iterate(It::metadata_iterator() | remote_iterator()) -> metadata_iterator() | remote_iterator()
advance the iterator by one key, full-prefix or sub-prefix
iterator() -> metadata_iterator()
Returns a full-prefix iterator: an iterator for all full-prefixes that have keys stored under them When done with the iterator, iterator_close/1 must be called
iterator(Prefix::binary() | atom()) -> metadata_iterator()
Returns a sub-prefix iterator for a given prefix. When done with the iterator, iterator_close/1 must be called
iterator(FullPrefix::metadata_prefix(), KeyMatch::term()) -> metadata_iterator()
Return an iterator for keys stored under a prefix. If KeyMatch is undefined then all keys will may be visted by the iterator. Otherwise only keys matching KeyMatch will be visited.
KeyMatch can be either: * an erlang term - which will be matched exactly against a key * '_' - which is equivalent to undefined * an erlang tuple containing terms and '_' - if tuples are used as keys * this can be used to iterate over some subset of keys
When done with the iterator, iterator_close/1 must be callediterator_close(Remote_iterator::metadata_iterator() | remote_iterator()) -> ok
Closes the iterator. This function must be called on all open iterators
iterator_done(Remote_iterator::metadata_iterator() | remote_iterator()) -> boolean()
returns true if there are no more keys or prefixes to iterate over
iterator_prefix(Remote_iterator::metadata_iterator() | remote_iterator()) -> metadata_prefix() | undefined | binary() | atom()
return the full-prefix or prefix being iterated by this iterator. If the iterator is a full-prefix iterator undefined is returned.
iterator_value(Remote_iterator::metadata_iterator() | remote_iterator()) -> {metadata_key(), metadata_object()} | metadata_prefix() | binary() | atom()
return the key and object or the prefix pointed to by the iterator
merge(X1::{metadata_pkey(), undefined | metadata_context()}, Obj::undefined | metadata_object()) -> boolean()
Merges a remote copy of a metadata record sent via broadcast w/ the local view
for the key contained in the message id. If the remote copy is causally older than
the current data stored then false is returned and no updates are merged. Otherwise,
the remote copy is merged (possibly generating siblings) and true is returned.
merge(Node::node(), X2::{metadata_pkey(), undefined | metadata_context()}, Obj::metadata_object()) -> boolean()
same as merge/2 but merges the object on Node
put(PKey::metadata_pkey(), Context::metadata_context() | undefined, ValueOrFun::metadata_value() | metadata_modifier()) -> metadata_object()
Sets the value of a prefixed key. The most recently read context (see get/1) should be passed as the second argument to prevent unneccessary siblings.
remote_iterator(Node::node()) -> remote_iterator()
Create an iterator on Node. This allows for remote iteration by having
the metadata manager keep track of the actual iterator (since ets continuations cannot
cross node boundaries). The iterator created iterates all full-prefixes. Once created
the rest of the iterator API may be used as usual. When done with the iterator,
iterator_close/1 must be called
remote_iterator(Node::node(), Prefix::metadata_prefix() | binary() | atom() | undefined) -> remote_iterator()
Create an iterator on Node. This allows for remote iteration
by having the metadata manager keep track of the actual iterator
(since ets continuations cannot cross node boundaries). When
Perfix is not a full prefix, the iterator created iterates all
sub-prefixes under Prefix. Otherse, the iterator iterates all keys
under a prefix. Once created the rest of the iterator API may be used as usual.
When done with the iterator, iterator_close/1 must be called
start_link() -> {ok, pid()} | ignore | {error, term()}
Same as start_link([]).
start_link(Opts::mm_opts()) -> {ok, pid()} | ignore | {error, term()}
Start riak_core_metadadata_manager and link to calling process.
The following options can be provided: * data_dir: the root directory to place cluster metadata files. if not provided this defaults to thecluster_meta directory in
riak_core's platform_data_dir.
* nodename: the node identifier (for use in logical clocks). defaults to node()
Generated by EDoc