From 7f0cd1b8ef785f00daba55e6aca07e3532e97cf7 Mon Sep 17 00:00:00 2001 From: Sylvain Ribstein Date: Thu, 20 Feb 2025 15:40:44 +0100 Subject: [PATCH] evm/node: add keep_alive to tx_queue --- etherlink/CHANGES_NODE.md | 3 +++ etherlink/bin_node/lib_dev/observer.ml | 6 +++++- etherlink/bin_node/lib_dev/tx_queue.ml | 24 ++++++++++++++++++------ etherlink/bin_node/lib_dev/tx_queue.mli | 1 + 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/etherlink/CHANGES_NODE.md b/etherlink/CHANGES_NODE.md index 92bcfde47379..fa913a5adbb5 100644 --- a/etherlink/CHANGES_NODE.md +++ b/etherlink/CHANGES_NODE.md @@ -48,6 +48,9 @@ ### Execution changes +- **experimental feature** The `tx_queue` respect the configuration +field `keep_alive` for it's RPC. (!16894) + ### Storage changes - Adds support for the `%h` variable in the `snapshot export` and `run observer diff --git a/etherlink/bin_node/lib_dev/observer.ml b/etherlink/bin_node/lib_dev/observer.ml index 95e45e1736b1..4d1783eae4de 100644 --- a/etherlink/bin_node/lib_dev/observer.ml +++ b/etherlink/bin_node/lib_dev/observer.ml @@ -209,7 +209,11 @@ let main ?network ?kernel_path ~data_dir ~(config : Configuration.t) ~no_sync let* () = match config.experimental_features.enable_tx_queue with | Some tx_queue_config -> - Tx_queue.start ~evm_node_endpoint ~config:tx_queue_config () + Tx_queue.start + ~evm_node_endpoint + ~config:tx_queue_config + ~keep_alive:config.keep_alive + () | None -> let mode = if config.finalized_view then diff --git a/etherlink/bin_node/lib_dev/tx_queue.ml b/etherlink/bin_node/lib_dev/tx_queue.ml index 0687adc9a5ed..f221f656c713 100644 --- a/etherlink/bin_node/lib_dev/tx_queue.ml +++ b/etherlink/bin_node/lib_dev/tx_queue.ml @@ -8,7 +8,11 @@ open Tezos_workers -type parameters = {evm_node_endpoint : Uri.t; config : Configuration.tx_queue} +type parameters = { + evm_node_endpoint : Uri.t; + config : Configuration.tx_queue; + keep_alive : bool; +} type queue_variant = [`Accepted | `Refused] @@ -102,6 +106,7 @@ type state = { pending : Pending_transactions.t; tx_object : Tx_object.t; config : Configuration.tx_queue; + keep_alive : bool; } module Types = struct @@ -191,7 +196,7 @@ type worker = Worker.infinite Worker.queue Worker.t let uuid_seed = Random.get_state () -let send_transactions_batch ~evm_node_endpoint transactions = +let send_transactions_batch ~evm_node_endpoint ~keep_alive transactions = let open Lwt_result_syntax in let module M = Map.Make (String) in let module Srt = Rpc_encodings.Send_raw_transaction in @@ -221,7 +226,7 @@ let send_transactions_batch ~evm_node_endpoint transactions = let* responses = Rollup_services.call_service - ~keep_alive:true + ~keep_alive ~base:evm_node_endpoint (Batch.dispatch_batch_service ~path:Resto.Path.root) () @@ -328,6 +333,7 @@ module Handlers = struct let+ () = send_transactions_batch + ~keep_alive:state.keep_alive ~evm_node_endpoint:state.evm_node_endpoint transactions_to_inject in @@ -344,7 +350,8 @@ module Handlers = struct type launch_error = tztrace - let on_launch _self () ({evm_node_endpoint; config} : parameters) = + let on_launch _self () ({evm_node_endpoint; config; keep_alive} : parameters) + = let open Lwt_result_syntax in return { @@ -355,6 +362,7 @@ module Handlers = struct too much at start. *) tx_object = Tx_object.empty ~start_size:(config.max_size / 4); config; + keep_alive; } let on_error (type a b) _self _status_request (_r : (a, b) Request.t) @@ -436,10 +444,14 @@ let inject ?(callback = fun _ -> Lwt_syntax.return_unit) let confirm txn_hash = bind_worker @@ fun w -> push_request w (Confirm {txn_hash}) -let start ~config ~evm_node_endpoint () = +let start ~config ~evm_node_endpoint ~keep_alive () = let open Lwt_result_syntax in let* worker = - Worker.launch table () {evm_node_endpoint; config} (module Handlers) + Worker.launch + table + () + {evm_node_endpoint; config; keep_alive} + (module Handlers) in Lwt.wakeup worker_waker worker ; let*! () = Tx_queue_events.is_ready () in diff --git a/etherlink/bin_node/lib_dev/tx_queue.mli b/etherlink/bin_node/lib_dev/tx_queue.mli index e70ed1587310..1a752434ccea 100644 --- a/etherlink/bin_node/lib_dev/tx_queue.mli +++ b/etherlink/bin_node/lib_dev/tx_queue.mli @@ -30,6 +30,7 @@ type callback = [`Accepted | `Confirmed | `Dropped | `Refused] -> unit Lwt.t val start : config:Configuration.tx_queue -> evm_node_endpoint:Uri.t -> + keep_alive:bool -> unit -> unit tzresult Lwt.t -- GitLab