From 6c52f3170214e97b3ca310c17313500e95124f39 Mon Sep 17 00:00:00 2001 From: Antoine Lanco Date: Mon, 29 Jul 2024 10:49:20 +0200 Subject: [PATCH] EVM node/snapshots: Export SQLite database --- etherlink/bin_node/lib_dev/evm_store.ml | 4 +++- etherlink/bin_node/lib_dev/evm_store.mli | 3 +++ etherlink/bin_node/lib_dev/snapshots.ml | 7 +++++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/etherlink/bin_node/lib_dev/evm_store.ml b/etherlink/bin_node/lib_dev/evm_store.ml index 10ef67cf9c82..999116c3cbfa 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 5a3d3a8b8ec2..d83c4c1cda7e 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 3a5175c1d8df..929f7ace5347 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 -- GitLab