Module Irmin_pack.Conf

type length_header = [ `Varint ] option
type inode_child_order = [
  1. | `Seeded_hash
    (*

    use a non-crypto seeded-hash of the step

    *)
  2. | `Hash_bits
    (*

    crypto hash the step and extract the relevant bits.

    *)
  3. | `Custom of depth:int -> bytes -> int
    (*

    use a custom index

    *)
]
module type S = sig ... end
type merge_throttle = [
  1. | `Block_writes
  2. | `Overcommit_memory
]

Strategy for when attempting to write when the index log is full and waiting for an in-progress merge to complete.

  • `Block_writes will block writes
  • `Overcommit_memory will allow writes by growing the in-memory cache indefinitely
val merge_throttle_t : merge_throttle Irmin.Type.t
module Key : sig ... end
val fresh : Irmin.Backend.Conf.t -> bool

Flag to indicate that the store will start with fresh data on disk. Warning: setting this to true will delete existing data. Default is false.

val lru_size : Irmin.Backend.Conf.t -> int

Maximum size, in number of entries, of LRU cache. Default 100_000. Unused if lru_max_memory is set.

val lru_max_memory : Irmin.Backend.Conf.t -> int option

Maximum memory, in bytes, for the LRU cache to use. Default None, which falls back to lru_size for LRU limit.

val index_log_size : Irmin.Backend.Conf.t -> int

Size, in number of entries, of index log. Default 2_500_000.

val readonly : Irmin.Backend.Conf.t -> bool

Flag for opening data in read-only mode. Default false.

val merge_throttle : Irmin.Backend.Conf.t -> merge_throttle

Strategy for how to handle writes when index log is full and a merge is in-progress. Default `Block_writes.

val root : Irmin.Backend.Conf.t -> string

Location of directory for saving data on disk.

Note: The path before the root directory must exist. Only the final directory in the path will be created if it is missing.

val lower_root : Irmin.Backend.Conf.t -> string option

Optional path for lower layer directory. Default None.

The presence or not of a lower layer has implications on the behaviour of the GC: if a lower layer is present, the GC will archive data instead of deleting it.

val indexing_strategy : Irmin.Backend.Conf.t -> Indexing_strategy.t

Strategy for choosing which objects to index. See Indexing_strategy.t for more discussion. Default Indexing_strategy.default

val use_fsync : Irmin.Backend.Conf.t -> bool

Flag to indicate that fsync should be used to enforce durability when flushing data to disk. Default false.

val dict_auto_flush_threshold : Irmin.Backend.Conf.t -> int

Size, in bytes, when automatic flushing of dict file to disk. Default 1_000_000.

val suffix_auto_flush_threshold : Irmin.Backend.Conf.t -> int

Size, in bytes, when automatic flushing of suffix file to disk. Default 1_000_000.

val no_migrate : Irmin.Backend.Conf.t -> bool

Flag to prevent migration of data. Default false.

val init : ?fresh:bool -> ?readonly:bool -> ?lru_size:int -> ?lru_max_memory:int option -> ?index_log_size:int -> ?merge_throttle:merge_throttle -> ?indexing_strategy:Indexing_strategy.t -> ?use_fsync:bool -> ?dict_auto_flush_threshold:int -> ?suffix_auto_flush_threshold:int -> ?no_migrate:bool -> ?lower_root:string option -> string -> Irmin.config

init root creates a backend configuration for storing data with default configuration parameters and stored at root. Flags are documented above.