Plasma GitLab Archive
Projects Blog Knowledge

Class type Nn_state.shared_state_t


class type shared_state_t = object .. end
This object exists once in the nn_master container, and collects information from not yet committed views (such as which ID's are used), so that the views can avoid clashes between each other. Also caching of committed values.

method event_system : Unixqueue.event_system
The common event system
method node_config : Nn_config.nn_node_config
the configuration
method cur_rev_ident : string
Returns current revision identifier
method new_rev_ident : unit -> string
Creates a new revision identifier
method set_rev_ident : string -> unit
Sets the identitifer returned by cur_rev_ident
method datastore_max_id : int option
Maximum ID used in the datastore table (None if use_id was never called)
method datastore_use_id : int -> unit
Record that this ID is now also used in a transaction
method inode_max_id : int64 option
Maximum ID used in the inode table (None if use_id was never called)
method inode_use_id : int64 -> unit
Record that this ID is now also used in a transaction
method inode_get_new_id_serialized : (Unixqueue.event_system -> int64 Uq_engines.engine) ->
int64 Uq_engines.engine
Serializer for getting a new ID from the inode table
method finish_transaction_serialized : (Unixqueue.event_system -> bool Uq_engines.engine) -> bool Uq_engines.engine
finish_transaction_serialized f: Run f esys in a serialized way. This is intended for finishing the transaction, i.e. that globally only one commit or rollback can be done at a time
method slaves : (string * Rpc_proxy.ManagedClient.mclient * bool Pervasives.ref) list
Connections to the name slaves as triples (name,client,enabled). These must only be used in the commit protocol.
method enough_slaves : bool
Whether there are enough slaves
method master : string
The master in host:port syntax
method master_enabled : bool Pervasives.ref
Whether the master (i.e. this process) is still in sync with the rest
method exists_blockmap : string -> bool
Whether we have a blockmap for this identity
method create_blockmap : Nn_blockmap.blockmap_t -> unit
create_blockmap m: Creates a map of free/used/reserved blocks.
method blockmaps : Nn_blockmap.blockmap_t list
All blockmaps
method get_blockmap : string -> Nn_blockmap.blockmap_t
Get the blockmap for this identity, or Not_found
method blockmap_get_e : identity:string -> Nn_blockmap.blockmap_t Uq_engines.engine
If the blockmap exists, return it. If it does not exist, load it from the db. Loading is serialized if several users need the blockmap.
method blockmap_prioritizer : unit Uq_engines.prioritizer
Used to prioritize commits before other accesses to the blockmap. Commits run at priority 1, other accesses at priority 2.

The blockmap commit is part of the post_commit actions. For simplicity the whole post_commit is prioritized this way.

The important "other access" is setting the keep bits. This must not overlap with blockmap commits.

method forget_identity : string -> unit
Forget everything about this datastore identity
method lock_inode : int64 -> <  > -> (unit -> unit) option
Returns Some unlock if successful where calling unlock removes the lock, or reverts to the previous state (1-step undo)
method unlock_inodes : <  > -> unit
unlock all inodes of this owner
method lock_filename : string -> [ `Exists | `Link | `Unlink ] -> <  > -> (unit -> unit) option
Lock types:
  • `Link: States that the file is created, and must not be created by another transaction. A `Link lock is exlusive.
  • `Unlink: States that the file is removed. Several transactions are allowed to remove the same file without conflict.
  • `Exists: States that the file exists. Several transactions can request this. (Used for ensuring that parent directories exist until the end of the transaction.)
Certain lock type changes are allowed provided this is ok with the protected operations (e.g. from `Unlink to `Link). It is also possible that a lock already exists with stronger guarantees (e.g. we have already `Link which implies `Exists).

Returns Some unlock if successful where calling unlock removes the lock, or reverts to the previous state (1-step undo).

method unlock_filenames : <  > -> unit
unlock all filenames of this owner
This web site is published by Informatikbüro Gerd Stolpmann
Powered by Caml