class type shared_state_t =object
..end
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
method node_config : Nn_config.nn_node_config
method cur_rev_ident : string
method new_rev_ident : unit -> string
method set_rev_ident : string -> unit
cur_rev_ident
method datastore_max_id : int option
method datastore_use_id : int -> unit
method inode_max_id : int64 option
method inode_use_id : int64 -> unit
method inode_get_new_id_serialized : (Unixqueue.event_system -> int64 Uq_engines.engine) ->
int64 Uq_engines.engine
method commit_monitor : Nn_commit_monitor.commit_monitor
method slaves : (string * Rpc_proxy.ManagedClient.mclient * bool) list
method disable_slave : string -> unit
disable_slave name
method is_slave_disabled : string -> bool
method minimum_slaves : int
method enough_slaves : bool
method master : string
method master_enabled : bool
method disable_master : unit -> unit
method blockmaps : Nn_blockmap.blockmap_t list
method get_blockmap : string -> Nn_blockmap.blockmap_t
Not_found
method blockmap_get_e : identity:string -> Nn_blockmap.blockmap_t Uq_engines.engine
method blockmap_serialized : int64 list ->
(Unixqueue.event_system -> unit Uq_engines.engine) -> unit Uq_engines.engine
Currently we have here inode granularity (each inode has a separate
lock). A possible improvement would be reader/writer locks.
method forget_identity : string -> unit
method lock_inode : int64 -> owner -> (unit -> unit) option
Some unlock
if successful where calling unlock
removes
the lock, or reverts to the previous state (1-step undo)method unlock_inodes : owner -> unit
method lock_filename : int64 * string ->
[ `Exists | `Link | `Unlink ] -> owner -> (unit -> unit) option
lock_filename (dir_inode,name) lock_type owner
: Locks the name
member of directory dir_inode
.
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, and must not be
removed by another transaction. An `Unlink
lock is exclusive.`Exists:
States that the file exists. Several transactions can
request this. (Used for ensuring that parent directories exist
until the end of the transaction.)`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 : owner -> unit
method inode_modify_use_counts : transactions:(int -> int) -> int64 -> unit
If transactions
drops to 0, the entry is automatically removed.
method inode_use_counts : int64 -> int
(transactions)
numbers (or raises Not_found
)method zombie_inodes_exist : bool
method set_zombie_inodes : bool -> unit
method cauth : Pfs_auth.client_auth
method db_trans_for_commit : unit -> Nn_db.transaction
method incr_count : counter_name -> unit
method reset_count : counter_name -> int