diff --git a/etherlink/bin_node/lib_dev/evm_store.ml b/etherlink/bin_node/lib_dev/evm_store.ml index 10ef67cf9c823704e8abf5eb274a9008b116b586..999116c3cbfa63bf808d57f2eb659ab574aa27d8 100644 --- a/etherlink/bin_node/lib_dev/evm_store.ml +++ b/etherlink/bin_node/lib_dev/evm_store.ml @@ -477,9 +477,11 @@ let vacuum ~conn ~output_db_file = with_connection conn @@ fun conn -> Db.exec conn Q.vacuum_request output_db_file +let sqlite_file_name = "store.sqlite" + let init ~data_dir ~perm () = let open Lwt_result_syntax in - let path = data_dir // "store.sqlite" in + let path = data_dir // sqlite_file_name in let*! exists = Lwt_unix.file_exists path in let write_perm = match perm with `Read_only -> false | `Read_write -> true diff --git a/etherlink/bin_node/lib_dev/evm_store.mli b/etherlink/bin_node/lib_dev/evm_store.mli index 5a3d3a8b8ec297e64547f421167205f4bb307409..d83c4c1cda7eb372816cc7e5ddea5cdd0ce6b08f 100644 --- a/etherlink/bin_node/lib_dev/evm_store.mli +++ b/etherlink/bin_node/lib_dev/evm_store.mli @@ -29,6 +29,9 @@ val init : (** [use store k] executes [k] with a fresh connection to [store]. *) val use : t -> (conn -> 'a tzresult Lwt.t) -> 'a tzresult Lwt.t +(** name of the sqlite file *) +val sqlite_file_name : string + (** Run VACUUM sqlite request *) val vacuum : conn:conn -> output_db_file:string -> unit tzresult Lwt.t diff --git a/etherlink/bin_node/lib_dev/snapshots.ml b/etherlink/bin_node/lib_dev/snapshots.ml index 3a5175c1d8dfcb51216f44b69ac3594662b696de..929f7ace53472de5634394ca34a2503d06d7e38c 100644 --- a/etherlink/bin_node/lib_dev/snapshots.ml +++ b/etherlink/bin_node/lib_dev/snapshots.ml @@ -91,8 +91,11 @@ let export ?dest ?filename ~compression ~data_dir () = [] in let files = evm_context_files in - (* TODO: add store.sql *) - (* TODO: add wasm_2_0_0 *) + (* Export SQLite database *) + Lwt_utils_unix.with_tempdir "evm_node_sqlite_export_" @@ fun tmp_dir -> + let output_db_file = Filename.concat tmp_dir Evm_store.sqlite_file_name in + let* () = Evm_context.vacuum ~data_dir ~output_db_file in + let files = (output_db_file, Evm_store.sqlite_file_name) :: files in let writer = match compression with | On_the_fly -> gzip_writer