From 6375a4eb5b90206c8897213eeda9338b2516c1cf Mon Sep 17 00:00:00 2001 From: Sylvain Ribstein Date: Thu, 14 Nov 2024 10:37:12 +0100 Subject: [PATCH 1/5] evm/node: add events when connection failed to be aquired --- .../bin_node/lib_dev/rollup_node_follower.ml | 10 ++++++--- .../lib_dev/rollup_node_follower_events.ml | 22 +++++++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/etherlink/bin_node/lib_dev/rollup_node_follower.ml b/etherlink/bin_node/lib_dev/rollup_node_follower.ml index de372672f1a6..7e9da33c63bf 100644 --- a/etherlink/bin_node/lib_dev/rollup_node_follower.ml +++ b/etherlink/bin_node/lib_dev/rollup_node_follower.ml @@ -85,7 +85,8 @@ let[@tailrec] rec connect_to_stream ?(count = 0) ~rollup_node_endpoint () = | Ok (stream, close) -> let*! () = Rollup_node_follower_events.connection_acquired () in return {close; stream; rollup_node_endpoint; timeout = 300.} - | Error _e -> + | Error errs -> + let*! () = Rollup_node_follower_events.connection_failed errs in (connect_to_stream [@tailcall]) ~count:(count + 1) ~rollup_node_endpoint @@ -149,8 +150,9 @@ let[@tailrec] rec catchup_and_next_block ~proxy ~catchup_event ~connection = else return_unit in return (block, connection) - | Error [Connection_lost] | Error [Connection_timeout] -> + | Error ([(Connection_lost | Connection_timeout)] as errs) -> connection.close () ; + let*! () = Rollup_node_follower_events.connection_failed errs in let* connection = connect_to_stream ~count:1 @@ -164,7 +166,9 @@ let[@tailrec] rec catchup_and_next_block ~proxy ~catchup_event ~connection = `evm_context` and would fail to fetch some data. Else catchup possible missed event.*) ~connection - | Error errs -> fail errs + | Error errs -> + let*! () = Rollup_node_follower_events.stream_failed errs in + fail errs (** [loop_on_rollup_node_stream ~proxy ~oldest_rollup_node_known_l1_level ~connection] main loop to diff --git a/etherlink/bin_node/lib_dev/rollup_node_follower_events.ml b/etherlink/bin_node/lib_dev/rollup_node_follower_events.ml index 1cb4fb25e07a..181b5f1406b4 100644 --- a/etherlink/bin_node/lib_dev/rollup_node_follower_events.ml +++ b/etherlink/bin_node/lib_dev/rollup_node_follower_events.ml @@ -66,6 +66,24 @@ module Event = struct "Waiting {duration} sec before trying to reconnect to the rollup node" ~level:Info ("duration", Data_encoding.float) + + let connection_failed = + declare_1 + ~section + ~name:"rollup_node_follower_connection_failed" + ~msg:"Connection with the rollup node failed with {trace}" + ~level:Error + ~pp1:Error_monad.pp_print_trace + ("trace", Error_monad.trace_encoding) + + let stream_failed = + declare_1 + ~section + ~name:"rollup_node_follower_stream_failed" + ~msg:"Stream from the rollup node failed with {trace}" + ~level:Error + ~pp1:Error_monad.pp_print_trace + ("trace", Error_monad.trace_encoding) end let disabled = Internal_event.Simple.emit Event.disabled @@ -82,3 +100,7 @@ let trying_reconnection duration = Internal_event.Simple.emit Event.trying_reconnection duration let connection_acquired = Internal_event.Simple.emit Event.connection_acquired + +let connection_failed = Internal_event.Simple.emit Event.connection_failed + +let stream_failed = Internal_event.Simple.emit Event.stream_failed -- GitLab From 3eee1f479c5281ca1c6a4d961a814fccb486bcfb Mon Sep 17 00:00:00 2001 From: Sylvain Ribstein Date: Thu, 14 Nov 2024 11:02:18 +0100 Subject: [PATCH 2/5] evm/node: mv evm_events follower request into own module --- .../bin_node/lib_dev/evm_events_follower.ml | 33 +++--------------- .../lib_dev/evm_events_follower_types.ml | 34 +++++++++++++++++++ 2 files changed, 38 insertions(+), 29 deletions(-) create mode 100644 etherlink/bin_node/lib_dev/evm_events_follower_types.ml diff --git a/etherlink/bin_node/lib_dev/evm_events_follower.ml b/etherlink/bin_node/lib_dev/evm_events_follower.ml index 424453998456..abffd56c290b 100644 --- a/etherlink/bin_node/lib_dev/evm_events_follower.ml +++ b/etherlink/bin_node/lib_dev/evm_events_follower.ml @@ -32,35 +32,8 @@ module Name = struct let equal () () = true end -module Request = struct - type ('a, 'b) t = New_rollup_node_block : Int32.t -> (unit, error trace) t - - type view = View : _ t -> view - - let view (req : _ t) = View req - - let encoding = - let open Data_encoding in - union - [ - case - (Tag 0) - ~title:"New_rollup_node_block" - (obj2 - (req "request" (constant "new_rollup_node_block")) - (req "rollup_head" int32)) - (function - | View (New_rollup_node_block rollup_head) -> Some ((), rollup_head)) - (fun ((), rollup_head) -> View (New_rollup_node_block rollup_head)); - ] - - let pp ppf (View r) = - match r with - | New_rollup_node_block rollup_head -> - Format.fprintf ppf "New_rollup_node_block (level %ld)" rollup_head -end - -module Worker = Worker.MakeSingle (Name) (Request) (Types) +module Worker = + Worker.MakeSingle (Name) (Evm_events_follower_types.Request) (Types) type worker = Worker.infinite Worker.queue Worker.t @@ -125,6 +98,8 @@ let on_new_head Evm_context.apply_evm_events ~finalized_level:rollup_block_lvl events module Handlers = struct + open Evm_events_follower_types + type self = worker let on_request : diff --git a/etherlink/bin_node/lib_dev/evm_events_follower_types.ml b/etherlink/bin_node/lib_dev/evm_events_follower_types.ml new file mode 100644 index 000000000000..5fb3c90c0475 --- /dev/null +++ b/etherlink/bin_node/lib_dev/evm_events_follower_types.ml @@ -0,0 +1,34 @@ +(*****************************************************************************) +(* *) +(* SPDX-License-Identifier: MIT *) +(* Copyright (c) 2024 Nomadic Labs *) +(* *) +(*****************************************************************************) + +module Request = struct + type ('a, 'b) t = New_rollup_node_block : Int32.t -> (unit, error trace) t + + type view = View : _ t -> view + + let view (req : _ t) = View req + + let encoding = + let open Data_encoding in + union + [ + case + (Tag 0) + ~title:"New_rollup_node_block" + (obj2 + (req "request" (constant "new_rollup_node_block")) + (req "rollup_head" int32)) + (function + | View (New_rollup_node_block rollup_head) -> Some ((), rollup_head)) + (fun ((), rollup_head) -> View (New_rollup_node_block rollup_head)); + ] + + let pp ppf (View r) = + match r with + | New_rollup_node_block rollup_head -> + Format.fprintf ppf "New_rollup_node_block (level %ld)" rollup_head +end -- GitLab From e454418002b7dfccc881d4b5bb376e4e47d94266 Mon Sep 17 00:00:00 2001 From: Sylvain Ribstein Date: Fri, 15 Nov 2024 09:03:25 +0100 Subject: [PATCH 3/5] evm/node: specify worker name in event for error --- etherlink/bin_node/lib_dev/blueprint_events.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etherlink/bin_node/lib_dev/blueprint_events.ml b/etherlink/bin_node/lib_dev/blueprint_events.ml index 478274f7a487..f2beb3bed719 100644 --- a/etherlink/bin_node/lib_dev/blueprint_events.ml +++ b/etherlink/bin_node/lib_dev/blueprint_events.ml @@ -129,7 +129,7 @@ let missing_blueprints = let worker_request_failed = declare_2 ~section - ~name:"request_failed" + ~name:"blueprints_publisher_request_failed" ~msg:"[Warning]: Request {view} failed: {errors}" ~level:Error ("view", Blueprints_publisher_types.Request.encoding) -- GitLab From 3f6a5609327f6e721be02af4f834c5578a59e9ac Mon Sep 17 00:00:00 2001 From: Sylvain Ribstein Date: Thu, 14 Nov 2024 11:02:39 +0100 Subject: [PATCH 4/5] evm/node: add events for evm events follower worker errors --- etherlink/bin_node/lib_dev/evm_events_follower.ml | 9 ++++++++- .../bin_node/lib_dev/evm_events_follower_events.ml | 14 ++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/etherlink/bin_node/lib_dev/evm_events_follower.ml b/etherlink/bin_node/lib_dev/evm_events_follower.ml index abffd56c290b..bc8545b2ad8a 100644 --- a/etherlink/bin_node/lib_dev/evm_events_follower.ml +++ b/etherlink/bin_node/lib_dev/evm_events_follower.ml @@ -129,7 +129,14 @@ module Handlers = struct unit tzresult Lwt.t = fun _w _ req errs -> let open Lwt_result_syntax in - match (req, errs) with _ -> return_unit + match req with + | Request.New_rollup_node_block _ -> + let*! () = + Evm_events_follower_events.worker_request_failed + (Request.view req) + errs + in + return_unit let on_completion _ _ _ _ = Lwt.return_unit diff --git a/etherlink/bin_node/lib_dev/evm_events_follower_events.ml b/etherlink/bin_node/lib_dev/evm_events_follower_events.ml index 0514b5c16811..447f9774bd3d 100644 --- a/etherlink/bin_node/lib_dev/evm_events_follower_events.ml +++ b/etherlink/bin_node/lib_dev/evm_events_follower_events.ml @@ -98,6 +98,17 @@ module Event = struct ~level:Error ("received", Data_encoding.int32) ("expected", Data_encoding.int32) + + let worker_request_failed = + declare_2 + ~section + ~name:"evm_events_request_failed" + ~msg:"[Warning]: Request {view} failed: {errors}" + ~level:Warning + ("view", Evm_events_follower_types.Request.encoding) + ~pp1:Evm_events_follower_types.Request.pp + ("errors", Error_monad.trace_encoding) + ~pp2:Error_monad.pp_print_trace end let started = Internal_event.Simple.emit Event.started @@ -122,3 +133,6 @@ let rollup_node_ahead Ethereum_types.(Qty level) = let out_of_sync ~received ~expected = Internal_event.Simple.emit Event.out_of_sync (received, expected) + +let worker_request_failed request_view errs = + Internal_event.Simple.emit Event.worker_request_failed (request_view, errs) -- GitLab From f4612029ee49e9b6dd849b43e5eb780fbd902f71 Mon Sep 17 00:00:00 2001 From: Sylvain Ribstein Date: Thu, 14 Nov 2024 14:04:50 +0100 Subject: [PATCH 5/5] evm/node: changelog --- etherlink/CHANGES_NODE.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/etherlink/CHANGES_NODE.md b/etherlink/CHANGES_NODE.md index 7b83b782eacd..9edf554e006d 100644 --- a/etherlink/CHANGES_NODE.md +++ b/etherlink/CHANGES_NODE.md @@ -25,6 +25,8 @@ - Modify the blueprints publisher worker to log error when it crash and make the node crash when it fails to add a blueprints into its queue. (!15600) +- Adds events for errors in evm events and rollup node + followers. (!15622) ## Version 0.7 (2024-10-28) -- GitLab