Plasma GitLab Archive
Projects Blog Knowledge

Module Nn_monitor

module Nn_monitor: sig .. end
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 Nn_datastore_news module (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
Returns the list of all datastores
val get : string -> Nn_datastores.datastore
Get the store record by identity string, or raise Not_found
val add : Nn_datastores.datastore -> unit
Add the datastore record as-is (for initializing this module from db).
val update_from_db : ?when_done:(unit -> unit) -> int -> unit
Read the db version of this record, and trigger the update of the module copy of it. The actual update will happen at some point in the future.
val delete : string -> unit
delete identity: Remove this store
val enable : string -> unit
enable identity: Sets enabled to true
val disable : string -> unit
disable identity: Sets enabled to false

Starts the datanode monitor. This is only possible within a Netplex component. The monitor uses the component event system to ping the datanode regularly.

Stops monitoring
val is_alive : string -> bool
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 bs.

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.

val start_publishing : unit -> unit
Updates on the datastores are published and can be retrieved from any other process using Nn_datastore_news

Stops feeding the news module
val post_add_hook : Netplex_types.socket_service -> Netplex_types.controller -> unit
Needs to be called from the post_add_hook
val receive_message : Netplex_types.container -> string -> string array -> unit
Needs to be called from the receive_message hook in order to arrange notifications about db updates
val post_start_hook : Netplex_types.container -> Nn_config.nn_node_config -> unit
Reads the datastore table from the database, and starts discovering datanodes.

It is required that Nn_db.init was called before.

This web site is published by Informatikbüro Gerd Stolpmann
Powered by Caml