module Nn_monitor:Management of datastores, i.e. which datastores are available on which datanodes
This module is run inside the single
nn_monitor process. Read access
from other processes is possible via the
(using a pub/sub scheme).
The module can also be notified to merge db changes into its in-core
set of datastores.
val list :
unit -> Nn_datastores.datastore list
val get :
string -> Nn_datastores.datastore
val add :
Nn_datastores.datastore -> unit
delete identity: Remove this store
enable identity: Sets
disable identity: Sets
is_alive identity: Returns whether the datanode having this store is good as seen by the monitor. Fails if the monitor is not started.
val discover :
?when_done:(Nn_datastores.discovered option -> unit) -> Unix.sockaddr -> unit
discover addr bs: Contacts this datanode and gets the identity. If the identity was added before, the store's location is set to this address.
This function can only be called within a Netplex component. The discovery is actually only triggered. If the monitor is also running, the datanode is enabled for being monitored.
In order to qualify, the datanode must have at least the size as
configured in the
datastore record. It is no error if the node is
bigger. Also, the blocksize must be
when_done: If passed, this function is called back when the
discovery is done. If the argument is
None it was not successful.
If it is
Some d, the record
d contains the discovered identity
and the size as reported by the datanode.
receive_messagehook in order to arrange notifications about db updates
val post_start_hook :
Netplex_types.container -> Nn_config.nn_node_config -> unit
It is required that
Nn_db.init was called before.