Skip to content

Commit 3d81124

Browse files
committed
Split genesis ledger tar creation method in two
The previous generate_tar method did two things: 1. It prepared the data needed to generate a new ledger database tar file, given some Ledger.t mask over a ledger database 2. It generated the actual tar files and names given that data When we generate the tar files for the migrated ledger databases during the hard fork, we will not have Ledger.t masks available to us. Rather, we will have known databases of hard fork accounts. In this situation, it is easier to do (1) separately, and then re-use (2) to generate the actual files. The generate_tar method now does (2) alone; a separate generate_ledger_tar method now does (1) and (2).
1 parent 6b5b720 commit 3d81124

File tree

2 files changed

+20
-20
lines changed

2 files changed

+20
-20
lines changed

src/app/runtime_genesis_ledger/runtime_genesis_ledger.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ let load_ledger ~ignore_missing_fields ~pad_app_state
3434
let generate_ledger_tarball ~genesis_dir ~ledger_name_prefix ledger =
3535
let%bind tar_path =
3636
Deferred.Or_error.ok_exn
37-
@@ Genesis_ledger_helper.Ledger.generate_tar ~genesis_dir ~logger
37+
@@ Genesis_ledger_helper.Ledger.generate_ledger_tar ~genesis_dir ~logger
3838
~ledger_name_prefix ledger
3939
in
4040
[%log info] "Generated ledger tar at %s" tar_path ;

src/lib/genesis_ledger_helper/genesis_ledger_helper.ml

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -219,35 +219,28 @@ module Ledger = struct
219219
| _, Some name ->
220220
search_local_and_s3 name )
221221

222-
let generate_tar ~genesis_dir ~logger ~ledger_name_prefix ledger =
223-
Mina_ledger.Ledger.commit ledger ;
224-
let dirname = Option.value_exn (Mina_ledger.Ledger.get_directory ledger) in
225-
let root_hash =
226-
Ledger_hash.to_base58_check @@ Mina_ledger.Ledger.merkle_root ledger
227-
in
228-
let%bind () = Unix.mkdir ~p:() genesis_dir in
229-
let tar_path = genesis_dir ^/ hash_filename root_hash ~ledger_name_prefix in
222+
let generate_tar ~logger ~target_dir ~ledger_name_prefix ~root_hash
223+
~ledger_dirname () =
224+
let root_hash = Ledger_hash.to_base58_check root_hash in
225+
let%bind.Deferred () = Unix.mkdir ~p:() target_dir in
226+
let tar_path = target_dir ^/ hash_filename root_hash ~ledger_name_prefix in
230227
[%log trace]
231228
"Creating $ledger tar file for $root_hash at $path from database at $dir"
232229
~metadata:
233230
[ ("ledger", `String ledger_name_prefix)
234231
; ("root_hash", `String root_hash)
235232
; ("path", `String tar_path)
236-
; ("dir", `String dirname)
233+
; ("dir", `String ledger_dirname)
237234
] ;
238235
(* This sleep for 5s is a hack for rocksdb. It seems like rocksdb would need some
239236
time to stablize *)
240-
let%bind () = after (Time.Span.of_int_sec 5) in
241-
match%map Tar.create ~root:dirname ~file:tar_path ~directory:"." () with
237+
let%bind.Deferred () = after (Time.Span.of_int_sec 5) in
238+
match%map.Deferred
239+
Tar.create ~root:ledger_dirname ~file:tar_path ~directory:"." ()
240+
with
242241
| Ok () ->
243242
Ok tar_path
244243
| Error err ->
245-
let root_hash =
246-
Ledger_hash.to_base58_check @@ Mina_ledger.Ledger.merkle_root ledger
247-
in
248-
let tar_path =
249-
genesis_dir ^/ hash_filename root_hash ~ledger_name_prefix
250-
in
251244
[%log error] "Could not generate a $ledger file at $path: $error"
252245
~metadata:
253246
[ ("ledger", `String ledger_name_prefix)
@@ -256,6 +249,13 @@ module Ledger = struct
256249
] ;
257250
Error err
258251

252+
let generate_ledger_tar ~genesis_dir ~logger ~ledger_name_prefix ledger =
253+
Mina_ledger.Ledger.commit ledger ;
254+
let dirname = Option.value_exn (Mina_ledger.Ledger.get_directory ledger) in
255+
let root_hash = Mina_ledger.Ledger.merkle_root ledger in
256+
generate_tar ~logger ~target_dir:genesis_dir ~ledger_name_prefix ~root_hash
257+
~ledger_dirname:dirname ()
258+
259259
let padded_accounts_from_runtime_config_opt ~logger ~proof_level
260260
~ledger_name_prefix ?overwrite_version (config : Runtime_config.Ledger.t)
261261
=
@@ -454,7 +454,7 @@ module Ledger = struct
454454
in
455455
let ledger = Lazy.force (Genesis_ledger.Packed.t packed) in
456456
let%bind.Deferred.Or_error tar_path =
457-
generate_tar ~genesis_dir ~logger ~ledger_name_prefix ledger
457+
generate_ledger_tar ~genesis_dir ~logger ~ledger_name_prefix ledger
458458
in
459459
let config =
460460
{ config with
@@ -531,7 +531,7 @@ module Ledger = struct
531531
in
532532
let ledger = Lazy.force (Genesis_ledger.Packed.t packed) in
533533
let%map.Deferred.Or_error tar_file =
534-
generate_tar ~genesis_dir ~logger ~ledger_name_prefix ledger
534+
generate_ledger_tar ~genesis_dir ~logger ~ledger_name_prefix ledger
535535
in
536536
(packed, config, tar_file)
537537
| Tar { tar_file; extracted_path } ->

0 commit comments

Comments
 (0)