From 66dc237f104ef547423ec36f561f452e1a2d91f0 Mon Sep 17 00:00:00 2001 From: Mario Rugiero Date: Mon, 16 Dec 2024 16:12:01 -0300 Subject: [PATCH 1/7] feat(explorer): mark pending batches in red after 5 minutes --- explorer/lib/explorer_web/components/core_components.ex | 2 ++ explorer/lib/explorer_web/live/utils.ex | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/explorer/lib/explorer_web/components/core_components.ex b/explorer/lib/explorer_web/components/core_components.ex index 02a49e5653..0cfc9b829b 100644 --- a/explorer/lib/explorer_web/components/core_components.ex +++ b/explorer/lib/explorer_web/components/core_components.ex @@ -464,6 +464,7 @@ defmodule ExplorerWeb.CoreComponents do :invalid -> "destructive" :verified -> "accent" :pending -> "foreground" + :stale -> "destructive" end } class={ @@ -476,6 +477,7 @@ defmodule ExplorerWeb.CoreComponents do :invalid -> "Invalid" :verified -> "Verified" :pending -> "Pending" + :stale -> "Pending" end %> <%= render_slot(@inner_block) %> diff --git a/explorer/lib/explorer_web/live/utils.ex b/explorer/lib/explorer_web/live/utils.ex index 0df4cc3ef4..bd91929fae 100644 --- a/explorer/lib/explorer_web/live/utils.ex +++ b/explorer/lib/explorer_web/live/utils.ex @@ -128,10 +128,16 @@ defmodule ExplorerWeb.Helpers do Utils.binary_to_hex_string(binary) end + def is_stale?(batch) do + expiration = Time.add(batch.submission_timestamp, 300) + Time.after?(Time.utc_now(), expiration) + end + def get_batch_status(batch) do cond do not batch.is_valid -> :invalid batch.is_verified -> :verified + is_stale?(batch) -> :stale true -> :pending end end From 343508a275d5b6e632c503b1767189783c669625 Mon Sep 17 00:00:00 2001 From: Mario Rugiero Date: Mon, 16 Dec 2024 16:31:02 -0300 Subject: [PATCH 2/7] fix: remove magic number + change message --- explorer/lib/explorer_web/components/core_components.ex | 2 +- explorer/lib/explorer_web/live/utils.ex | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/explorer/lib/explorer_web/components/core_components.ex b/explorer/lib/explorer_web/components/core_components.ex index 0cfc9b829b..1c5363727b 100644 --- a/explorer/lib/explorer_web/components/core_components.ex +++ b/explorer/lib/explorer_web/components/core_components.ex @@ -477,7 +477,7 @@ defmodule ExplorerWeb.CoreComponents do :invalid -> "Invalid" :verified -> "Verified" :pending -> "Pending" - :stale -> "Pending" + :stale -> "Unverified" end %> <%= render_slot(@inner_block) %> diff --git a/explorer/lib/explorer_web/live/utils.ex b/explorer/lib/explorer_web/live/utils.ex index bd91929fae..cbff432501 100644 --- a/explorer/lib/explorer_web/live/utils.ex +++ b/explorer/lib/explorer_web/live/utils.ex @@ -129,7 +129,8 @@ defmodule ExplorerWeb.Helpers do end def is_stale?(batch) do - expiration = Time.add(batch.submission_timestamp, 300) + batch_ttl_secs = 300 # 5 minutes + expiration = Time.add(batch.submission_timestamp, batch_ttl_secs) Time.after?(Time.utc_now(), expiration) end From 4e1e43503537437b5d52aeaeea6bce47e062a88e Mon Sep 17 00:00:00 2001 From: Mario Rugiero Date: Wed, 18 Dec 2024 11:59:09 -0300 Subject: [PATCH 3/7] fix: use DateTime instead of Time --- explorer/lib/explorer_web/live/utils.ex | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/explorer/lib/explorer_web/live/utils.ex b/explorer/lib/explorer_web/live/utils.ex index cbff432501..eeccbd0135 100644 --- a/explorer/lib/explorer_web/live/utils.ex +++ b/explorer/lib/explorer_web/live/utils.ex @@ -129,9 +129,8 @@ defmodule ExplorerWeb.Helpers do end def is_stale?(batch) do - batch_ttl_secs = 300 # 5 minutes - expiration = Time.add(batch.submission_timestamp, batch_ttl_secs) - Time.after?(Time.utc_now(), expiration) + DateTime.add(batch.submission_timestamp, 5, :minute) + |> DateTime.before?(DateTime.utc_now()) end def get_batch_status(batch) do From e70880884f23ac33afe545d91dc545c314782da4 Mon Sep 17 00:00:00 2001 From: Mario Rugiero Date: Wed, 18 Dec 2024 15:43:55 -0300 Subject: [PATCH 4/7] send broadcast for unverified batches --- explorer/lib/explorer/periodically.ex | 5 +++++ explorer/lib/explorer_web/live/pages/batch/index.ex | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/explorer/lib/explorer/periodically.ex b/explorer/lib/explorer/periodically.ex index 403d651403..89ad7f5a7f 100644 --- a/explorer/lib/explorer/periodically.ex +++ b/explorer/lib/explorer/periodically.ex @@ -119,6 +119,11 @@ defmodule Explorer.Periodically do Batches.insert_or_update(batch_changeset, proofs) end ) + + if Batches.get_unverified_batches() != nil do + "Marking stale batches..." |> Logger.debug() + PubSub.broadcast(Explorer.PubSub, "update_views", :unverified_batches) + end end def process_quorum_strategy_changes() do diff --git a/explorer/lib/explorer_web/live/pages/batch/index.ex b/explorer/lib/explorer_web/live/pages/batch/index.ex index e3c3156385..78d0e64d5f 100644 --- a/explorer/lib/explorer_web/live/pages/batch/index.ex +++ b/explorer/lib/explorer_web/live/pages/batch/index.ex @@ -88,6 +88,18 @@ defmodule ExplorerWeb.Batch.Index do end end + @impl true + def handle_info(:unverified_batches, socket) do + new_batch = Batches.get_batch(%{merkle_root: socket.assigns.merkle_root}) + { + :noreply, + assign( + socket, + current_batch: new_batch, + ) + } + end + @impl true def handle_event("show_proofs", _value, socket) do {:noreply, assign(socket, proof_hashes: get_proofs(socket.assigns.merkle_root))} From 2eddfd33c1ced242a605fbdf1e3072614bc63368 Mon Sep 17 00:00:00 2001 From: Mario Rugiero Date: Wed, 18 Dec 2024 15:44:06 -0300 Subject: [PATCH 5/7] mark invalid on nil batch --- explorer/lib/explorer_web/live/utils.ex | 1 + 1 file changed, 1 insertion(+) diff --git a/explorer/lib/explorer_web/live/utils.ex b/explorer/lib/explorer_web/live/utils.ex index eeccbd0135..349c94d2be 100644 --- a/explorer/lib/explorer_web/live/utils.ex +++ b/explorer/lib/explorer_web/live/utils.ex @@ -135,6 +135,7 @@ defmodule ExplorerWeb.Helpers do def get_batch_status(batch) do cond do + batch == nil -> :invalid not batch.is_valid -> :invalid batch.is_verified -> :verified is_stale?(batch) -> :stale From 7e8ee6092549a45caeba21aaa642691001e6782d Mon Sep 17 00:00:00 2001 From: Mario Rugiero Date: Wed, 18 Dec 2024 16:50:21 -0300 Subject: [PATCH 6/7] Revert "mark invalid on nil batch" This reverts commit 2eddfd33c1ced242a605fbdf1e3072614bc63368. This should be handled separately --- explorer/lib/explorer_web/live/utils.ex | 1 - 1 file changed, 1 deletion(-) diff --git a/explorer/lib/explorer_web/live/utils.ex b/explorer/lib/explorer_web/live/utils.ex index 349c94d2be..eeccbd0135 100644 --- a/explorer/lib/explorer_web/live/utils.ex +++ b/explorer/lib/explorer_web/live/utils.ex @@ -135,7 +135,6 @@ defmodule ExplorerWeb.Helpers do def get_batch_status(batch) do cond do - batch == nil -> :invalid not batch.is_valid -> :invalid batch.is_verified -> :verified is_stale?(batch) -> :stale From e9ef860669c805b8a5899bbb56c58ac23a6a748a Mon Sep 17 00:00:00 2001 From: Mario Rugiero Date: Wed, 18 Dec 2024 16:50:38 -0300 Subject: [PATCH 7/7] Revert "send broadcast for unverified batches" This reverts commit e70880884f23ac33afe545d91dc545c314782da4. This will be handled separately, as it seems to be a separate issue --- explorer/lib/explorer/periodically.ex | 5 ----- explorer/lib/explorer_web/live/pages/batch/index.ex | 12 ------------ 2 files changed, 17 deletions(-) diff --git a/explorer/lib/explorer/periodically.ex b/explorer/lib/explorer/periodically.ex index 89ad7f5a7f..403d651403 100644 --- a/explorer/lib/explorer/periodically.ex +++ b/explorer/lib/explorer/periodically.ex @@ -119,11 +119,6 @@ defmodule Explorer.Periodically do Batches.insert_or_update(batch_changeset, proofs) end ) - - if Batches.get_unverified_batches() != nil do - "Marking stale batches..." |> Logger.debug() - PubSub.broadcast(Explorer.PubSub, "update_views", :unverified_batches) - end end def process_quorum_strategy_changes() do diff --git a/explorer/lib/explorer_web/live/pages/batch/index.ex b/explorer/lib/explorer_web/live/pages/batch/index.ex index 78d0e64d5f..e3c3156385 100644 --- a/explorer/lib/explorer_web/live/pages/batch/index.ex +++ b/explorer/lib/explorer_web/live/pages/batch/index.ex @@ -88,18 +88,6 @@ defmodule ExplorerWeb.Batch.Index do end end - @impl true - def handle_info(:unverified_batches, socket) do - new_batch = Batches.get_batch(%{merkle_root: socket.assigns.merkle_root}) - { - :noreply, - assign( - socket, - current_batch: new_batch, - ) - } - end - @impl true def handle_event("show_proofs", _value, socket) do {:noreply, assign(socket, proof_hashes: get_proofs(socket.assigns.merkle_root))}