Add sync test option
This commit is contained in:
parent
2baa6c830c
commit
56936c7a1e
@ -66,7 +66,19 @@ let (>>=?) v f =
|
||||
|
||||
let init ?mapsize path =
|
||||
if not (Sys.file_exists path) then Unix.mkdir path 0o755 ;
|
||||
match Lmdb.opendir ?mapsize ~flags:[NoTLS; NoMetaSync] path 0o644 with
|
||||
let sync_flag =
|
||||
match Sys.getenv_opt "TEZOS_STORE_SYNC" with
|
||||
| None -> []
|
||||
| Some s ->
|
||||
match String.lowercase_ascii s with
|
||||
| "nosync" -> [ Lmdb.NoSync ]
|
||||
| "nometasync" -> [ Lmdb.NoMetaSync ]
|
||||
| _ ->
|
||||
Printf.eprintf "Unrecognized TEZOS_SYNC option : %s\n\
|
||||
allowed: nosync nometasync" s;
|
||||
[]
|
||||
in
|
||||
match Lmdb.opendir ?mapsize ~flags:(sync_flag @ [NoTLS; NoMetaSync]) path 0o644 with
|
||||
| Ok dir -> return { dir ; parent = Lwt.new_key () }
|
||||
| Error err -> failwith "%a" Lmdb.pp_error err
|
||||
|
||||
|
14
vendors/irmin-lmdb/irmin_lmdb.ml
vendored
14
vendors/irmin-lmdb/irmin_lmdb.ml
vendored
@ -677,7 +677,19 @@ module Make
|
||||
let root = match root with None -> "irmin.ldb" | Some root -> root in
|
||||
if not (Sys.file_exists root) then Unix.mkdir root 0o755 ;
|
||||
let flags = if readonly then [ Lmdb.RdOnly ] else [] in
|
||||
let flags = Lmdb.NoRdAhead :: Lmdb.NoTLS :: flags in
|
||||
let sync_flag =
|
||||
match Sys.getenv_opt "TEZOS_CONTEXT_SYNC" with
|
||||
| None -> []
|
||||
| Some s ->
|
||||
match String.lowercase_ascii s with
|
||||
| "nosync" -> [ Lmdb.NoSync ]
|
||||
| "nometasync" -> [ Lmdb.NoMetaSync ]
|
||||
| _ ->
|
||||
Printf.eprintf "Unrecognized TEZOS_SYNC option : %s\n\
|
||||
allowed: nosync nometasync" s;
|
||||
[]
|
||||
in
|
||||
let flags = sync_flag @ Lmdb.NoRdAhead :: Lmdb.NoTLS :: flags in
|
||||
let file_flags = if readonly then 0o444 else 0o644 in
|
||||
match Lmdb.opendir ~mapsize ~flags root file_flags with
|
||||
| Error err -> Lwt.fail_with (Lmdb.string_of_error err)
|
||||
|
Loading…
Reference in New Issue
Block a user