From 2fcc37493cbbab56f44eef8b7ebd92b2c27a70d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Proust?= Date: Thu, 6 Jul 2023 17:35:10 +0200 Subject: [PATCH 1/5] Crawler: don't use error-monad's legacy globals --- manifest/main.ml | 4 +--- src/lib_crawler/dune | 1 - src/lib_crawler/layer_1.ml | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/manifest/main.ml b/manifest/main.ml index a474d07dbf3a..8f15594d61d1 100644 --- a/manifest/main.ml +++ b/manifest/main.ml @@ -4068,9 +4068,7 @@ let octez_crawler = ~synopsis:"Octez: library to crawl blocks of the L1 chain" ~deps: [ - octez_base |> open_ ~m:"TzPervasives" - |> open_ ~m:"TzPervasives.Error_monad.Legacy_monad_globals" - |> open_; + octez_base |> open_ ~m:"TzPervasives" |> open_; octez_rpc_http |> open_; octez_base_unix; octez_stdlib_unix |> open_; diff --git a/src/lib_crawler/dune b/src/lib_crawler/dune index 44d5460e39f3..cb6d08010410 100644 --- a/src/lib_crawler/dune +++ b/src/lib_crawler/dune @@ -15,7 +15,6 @@ (flags (:standard) -open Tezos_base.TzPervasives - -open Tezos_base.TzPervasives.Error_monad.Legacy_monad_globals -open Tezos_base -open Tezos_rpc_http -open Tezos_stdlib_unix diff --git a/src/lib_crawler/layer_1.ml b/src/lib_crawler/layer_1.ml index 518f2a1dd736..c508589f1dac 100644 --- a/src/lib_crawler/layer_1.ml +++ b/src/lib_crawler/layer_1.ml @@ -177,7 +177,7 @@ let iter_heads l1_ctxt f = in Lwt.catch (fun () -> Lwt.no_cancel @@ loop l1_ctxt) - (function Iter_error e -> Lwt.return_error e | exn -> fail (Exn exn)) + (function Iter_error e -> Lwt.return_error e | exn -> fail_with_exn exn) let wait_first l1_ctxt = let rec loop l1_ctxt = -- GitLab From 4be9109d669141d449594bd169cc0f32876d7bf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Proust?= Date: Thu, 6 Jul 2023 17:52:06 +0200 Subject: [PATCH 2/5] Injector: don't use error-monad's legacy globals --- manifest/main.ml | 4 +--- src/lib_injector/disk_persistence.ml | 25 +++++++++++++------------ src/lib_injector/dune | 1 - src/lib_injector/injector_functor.ml | 26 +++++++++++++++----------- 4 files changed, 29 insertions(+), 27 deletions(-) diff --git a/manifest/main.ml b/manifest/main.ml index 8f15594d61d1..f4d8957bbc61 100644 --- a/manifest/main.ml +++ b/manifest/main.ml @@ -4083,9 +4083,7 @@ let octez_injector = ~synopsis:"Octez: library for building injectors" ~deps: [ - octez_base |> open_ ~m:"TzPervasives" - |> open_ ~m:"TzPervasives.Error_monad.Legacy_monad_globals" - |> open_; + octez_base |> open_ ~m:"TzPervasives" |> open_; logs_lwt; octez_base_unix; octez_stdlib_unix |> open_; diff --git a/src/lib_injector/disk_persistence.ml b/src/lib_injector/disk_persistence.ml index 200a04899376..e5f8089697b1 100644 --- a/src/lib_injector/disk_persistence.ml +++ b/src/lib_injector/disk_persistence.ml @@ -151,28 +151,29 @@ let create_dir dir = return_unit let read_value file encoding = - let open Lwt_syntax in + let open Lwt_result_syntax in trace (Cannot_read_file file) @@ Lwt.catch (fun () -> Lwt_io.with_file ~flags:[Unix.O_RDONLY; O_CLOEXEC] ~mode:Input file @@ fun channel -> - let+ bytes = Lwt_io.read channel in - Result.map_error (fun e -> [Decoding_error e]) - @@ Data_encoding.Binary.of_bytes - encoding - (Bytes.unsafe_of_string bytes)) + let*! bytes = Lwt_io.read channel in + let*? v = + Result.map_error (fun e -> [Decoding_error e]) + @@ Data_encoding.Binary.of_bytes + encoding + (Bytes.unsafe_of_string bytes) + in + return v) (function - | Unix.Unix_error (e, _, _) -> fail (Unix_error e) | e -> fail (Exn e)) + | Unix.Unix_error (e, _, _) -> tzfail (Unix_error e) + | e -> fail_with_exn e) let maybe_read_value ~warn file encoding = let open Lwt_syntax in let* v = read_value file encoding in - match v with - | Error e -> - let+ () = warn file e in - None - | Ok v -> return_some v + let* () = Result.iter_error_s (warn file) v in + return (Result.to_option v) let write_value file encoding value = trace (Cannot_write_file file) diff --git a/src/lib_injector/dune b/src/lib_injector/dune index 29183b872366..35314fb771bf 100644 --- a/src/lib_injector/dune +++ b/src/lib_injector/dune @@ -19,7 +19,6 @@ (flags (:standard) -open Tezos_base.TzPervasives - -open Tezos_base.TzPervasives.Error_monad.Legacy_monad_globals -open Tezos_base -open Tezos_stdlib_unix -open Tezos_micheline diff --git a/src/lib_injector/injector_functor.ml b/src/lib_injector/injector_functor.ml index 2aa820d2f7a7..24e84da0da50 100644 --- a/src/lib_injector/injector_functor.ml +++ b/src/lib_injector/injector_functor.ml @@ -692,11 +692,12 @@ module Make (Parameters : PARAMETERS) = struct state.signer.sk Unsigned_op.value in - Tezos_shell_services.Shell_services.Injection.operation - state.cctxt - ~chain:state.cctxt#chain - signed_op_bytes - >>=? fun oph -> + let* oph = + Tezos_shell_services.Shell_services.Injection.operation + state.cctxt + ~chain:state.cctxt#chain + signed_op_bytes + in let*! () = Event.(emit2 injected) state nb oph in return oph @@ -797,10 +798,11 @@ module Make (Parameters : PARAMETERS) = struct List.rev rev_ops (* Ignore operations that are allowed to fail. *) - let ignore_ignorable_failing_operations state operations = function + let ignore_ignorable_failing_operations state operations = + let open Lwt_result_syntax in + function | Ok res -> return (`Injected res) | Error err -> - let open Lwt_result_syntax in let+ operations_to_drop = List.fold_left_es (fun to_drop op -> @@ -1471,22 +1473,24 @@ module Make (Parameters : PARAMETERS) = struct return_unit let worker_of_signer signer_pkh = + let open Result_syntax in match Worker.find_opt table signer_pkh with | None -> (* TODO: https://gitlab.com/tezos/tezos/-/issues/2818 maybe lazily start worker here *) - error (No_worker_for_source signer_pkh) - | Some worker -> ok worker + tzfail (No_worker_for_source signer_pkh) + | Some worker -> return worker let worker_of_tag tag = + let open Result_syntax in match Tags_table.find_opt tags_table tag with | None -> Format.kasprintf - (fun s -> error (No_worker_for_tag s)) + (fun s -> tzfail (No_worker_for_tag s)) "%a" Parameters.Tag.pp tag - | Some worker -> ok worker + | Some worker -> return worker let add_pending_operation ?source op = let open Lwt_result_syntax in -- GitLab From be3964dba7ff8ebda524a1cfe872d715fd376e57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Proust?= Date: Thu, 6 Jul 2023 17:53:41 +0200 Subject: [PATCH 3/5] smart-rollup: don't use error-monad's legacy globals --- manifest/main.ml | 4 +--- src/lib_smart_rollup/dune | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/manifest/main.ml b/manifest/main.ml index f4d8957bbc61..94c61877cf55 100644 --- a/manifest/main.ml +++ b/manifest/main.ml @@ -4102,9 +4102,7 @@ let octez_smart_rollup_lib = ~synopsis:"Octez: library for Smart Rollups " ~deps: [ - octez_base |> open_ ~m:"TzPervasives" - |> open_ ~m:"TzPervasives.Error_monad.Legacy_monad_globals" - |> open_; + octez_base |> open_ ~m:"TzPervasives" |> open_; octez_base_unix; octez_stdlib_unix |> open_; octez_crypto |> open_; diff --git a/src/lib_smart_rollup/dune b/src/lib_smart_rollup/dune index 7924ffa64331..780eb1767e56 100644 --- a/src/lib_smart_rollup/dune +++ b/src/lib_smart_rollup/dune @@ -14,7 +14,6 @@ (flags (:standard) -open Tezos_base.TzPervasives - -open Tezos_base.TzPervasives.Error_monad.Legacy_monad_globals -open Tezos_base -open Tezos_stdlib_unix -open Tezos_crypto)) -- GitLab From 276550f7ece614347be558d2bb169ab6d501fe61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Proust?= Date: Thu, 6 Jul 2023 17:55:21 +0200 Subject: [PATCH 4/5] sequencer: don't use error-monad's legacy globals --- manifest/main.ml | 3 +-- src/bin_sequencer_node/dune | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/manifest/main.ml b/manifest/main.ml index 94c61877cf55..5bf8cfac2df9 100644 --- a/manifest/main.ml +++ b/manifest/main.ml @@ -7513,8 +7513,7 @@ let _sc_sequencer_node = ~with_macos_security_framework:true ~deps: [ - octez_base |> open_ |> open_ ~m:"TzPervasives" - |> open_ ~m:"TzPervasives.Error_monad.Legacy_monad_globals"; + octez_base |> open_ |> open_ ~m:"TzPervasives"; octez_clic; octez_client_base |> open_; octez_client_base_unix |> open_; diff --git a/src/bin_sequencer_node/dune b/src/bin_sequencer_node/dune index 270c52c4dee1..ab8b306e8630 100644 --- a/src/bin_sequencer_node/dune +++ b/src/bin_sequencer_node/dune @@ -24,7 +24,6 @@ (:standard) -open Tezos_base -open Tezos_base.TzPervasives - -open Tezos_base.TzPervasives.Error_monad.Legacy_monad_globals -open Tezos_client_base -open Tezos_client_base_unix -open Tezos_client_commands -- GitLab From f1bda54292eb79da59434af8694685638dfa41c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Proust?= Date: Thu, 6 Jul 2023 17:58:58 +0200 Subject: [PATCH 5/5] scoru-sequencer: don't use error-monad's legacy globals --- manifest/main.ml | 3 +-- src/lib_scoru_sequencer/dune | 1 - src/lib_scoru_sequencer/rpc_server.ml | 2 +- src/lib_scoru_sequencer/seq_batcher.ml | 5 +++-- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/manifest/main.ml b/manifest/main.ml index 5bf8cfac2df9..260064f70933 100644 --- a/manifest/main.ml +++ b/manifest/main.ml @@ -7472,8 +7472,7 @@ let octez_scoru_sequencer = ~synopsis:"Sequencer library for smart contract rollup" ~deps: [ - octez_base |> open_ |> open_ ~m:"TzPervasives" - |> open_ ~m:"TzPervasives.Error_monad.Legacy_monad_globals"; + octez_base |> open_ |> open_ ~m:"TzPervasives"; Protocol.(octez_sc_rollup_layer2 alpha |> if_some |> open_); Protocol.(main alpha) |> open_; Protocol.(octez_sc_rollup_node alpha) |> if_some; diff --git a/src/lib_scoru_sequencer/dune b/src/lib_scoru_sequencer/dune index e15cae69fa9a..cddccfa20fbf 100644 --- a/src/lib_scoru_sequencer/dune +++ b/src/lib_scoru_sequencer/dune @@ -20,7 +20,6 @@ (:standard) -open Tezos_base -open Tezos_base.TzPervasives - -open Tezos_base.TzPervasives.Error_monad.Legacy_monad_globals -open Tezos_smart_rollup_layer2_alpha -open Tezos_protocol_alpha -open Tezos_workers diff --git a/src/lib_scoru_sequencer/rpc_server.ml b/src/lib_scoru_sequencer/rpc_server.ml index 8f3e6bd134bf..95236ebbed62 100644 --- a/src/lib_scoru_sequencer/rpc_server.ml +++ b/src/lib_scoru_sequencer/rpc_server.ml @@ -35,7 +35,7 @@ module Local_directory = Make_directory (struct type subcontext = unit - let context_of_prefix _ll_node_ctxt () = return () + let context_of_prefix _ll_node_ctxt () = Lwt_result_syntax.return_unit end) (* Register server handlers *) diff --git a/src/lib_scoru_sequencer/seq_batcher.ml b/src/lib_scoru_sequencer/seq_batcher.ml index dcaa70d5661f..bddb569f604d 100644 --- a/src/lib_scoru_sequencer/seq_batcher.ml +++ b/src/lib_scoru_sequencer/seq_batcher.ml @@ -304,10 +304,11 @@ let init _conf ~signer node_ctxt = (* This is a batcher worker for a single scoru *) let worker = + let open Result_syntax in lazy (match Lwt.state worker_promise with - | Lwt.Return worker -> ok worker - | Lwt.Fail _ | Lwt.Sleep -> error Sc_rollup_node_errors.No_batcher) + | Lwt.Return worker -> return worker + | Lwt.Fail _ | Lwt.Sleep -> tzfail Sc_rollup_node_errors.No_batcher) let handle_request_error rq = let open Lwt_syntax in -- GitLab