From 4322e6511d94a3310a37b47eb19d3a1880d75a11 Mon Sep 17 00:00:00 2001 From: "John D. Pope" Date: Tue, 18 Mar 2025 19:46:54 +1100 Subject: [PATCH] Update rpc.ex fixes for upabase-realtime | 08:17:21.484 [debug] file=lib/core/event_handler.ex line=88 Tags missing from tag_values. metric_name:=[:realtime, :rpc] tags:="success" supabase-realtime | 08:17:26.486 [debug] file=lib/core/event_handler.ex line=88 Tags missing from tag_values. metric_name:=[:realtime, :rpc] tags:="success" supabase-realtime | 08:17:31.488 [debug] file=lib/core/event_handler.ex line=88 Tags missing from tag_values. metric_name:=[:realtime, :rpc] tags:="success" supabase-realtime | 08:17:36.490 [debug] file=lib/core/event_handler.ex line=88 Tags missing from tag_values. metric_name:=[:realtime, :rpc] tags:="success" supabase-realtime | 08:17:41.491 [debug] file=lib/core/event_handler.ex line=88 Tags missing from tag_values. metric_name:=[:realtime, :rpc] tags:="success" supabase-realtime | 08:17:46.492 [debug] file=lib/core/event_handler.ex line=88 Tags missing from tag_values. metric_name:=[:realtime, :rpc] tags:="success" supabase-realtime | 08:17:51.494 [debug] file=lib/core/event_handler.ex line=88 Tags missing from tag_values. metric_name:=[:realtime, :rpc] tags:="success" supabase-realtime | 08:17:56.495 [debug] file=lib/core/event_handler.ex line=88 Tags missing from tag_values. metric_name:=[:realtime, :rpc] tags:="success" supabase-realtime | 08:18:01.496 [debug] file=lib/core/event_handler.ex line=88 Tags missing from tag_values. metric_name:=[:realtime, :rpc] tags:="success" supabase-realtime | 08:18:06.497 [debug] file=lib/core/event_handler.ex line=88 Tags missing from tag_values. metric_name:=[:realtime, :rpc] tags:="success" supabase-realtime | 08:18:11.498 [debug] file=lib/core/event_handler.ex line=88 Tags missing from tag_values. metric_name:=[:realtime, :rpc] tags:="success" supabase-realtime | 08:18:16.499 [debug] file=lib/core/event_handler.ex line=88 Tags missing from tag_values. metric_name:=[:realtime, :rpc] tags:="success" supabase-realtime | 08:18:21.500 [debug] file=lib/core/event_handler.ex line=88 Tags missing from tag_values. metric_name:=[:realtime, :rpc] tags:="success" supabase-realtime | 08:18:26.501 [debug] file=lib/core/event_handler.ex line=88 Tags missing from tag_values. metric_name:=[:realtime, :rpc] tags:="success" supabase-realtime | 08:18:31.502 [debug] file=lib/core/event_handler.ex line=88 Tags missing from tag_values. metric_name:=[:realtime, :rpc] tags:="success" supabase-realtime | 08:18:36.503 [debug] file=lib/core/event_handler.ex line=88 Tags missing from tag_values. metric_name:=[:realtime, :rpc] tags:="success" supabase-realtime | 08:18:41.504 [debug] file=lib/core/event_handler.ex line=88 Tags missing from tag_values. metric_name:=[:realtime, :rpc] tags:="success" supabase-realtime | 08:18:46.506 [debug] file=lib/core/event_handler.ex line=88 Tags missing from tag_values. metric_name:=[:realtime, :rpc] tags:="success" --- lib/realtime/rpc.ex | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/realtime/rpc.ex b/lib/realtime/rpc.ex index efd97be00..9e4d5b1e3 100644 --- a/lib/realtime/rpc.ex +++ b/lib/realtime/rpc.ex @@ -4,19 +4,26 @@ defmodule Realtime.Rpc do """ import Realtime.Logs alias Realtime.Telemetry + require Logger @doc """ Calls external node using :rpc.call/5 and collects telemetry """ @spec call(atom(), atom(), atom(), any(), keyword()) :: any() def call(node, mod, func, args, opts \\ []) do + Logger.debug("Rpc.call called: #{inspect({node, mod, func, args})}") timeout = Keyword.get(opts, :timeout, Application.get_env(:realtime, :rpc_timeout)) {latency, response} = :timer.tc(fn -> :rpc.call(node, mod, func, args, timeout) end) + success = case response do + {:badrpc, _} -> false + _ -> true + end + Telemetry.execute( [:realtime, :rpc], %{latency: latency}, - %{mod: mod, func: func, target_node: node, origin_node: node()} + %{mod: mod, func: func, target_node: node, origin_node: node(), success: success} ) response @@ -28,6 +35,7 @@ defmodule Realtime.Rpc do @spec enhanced_call(atom(), atom(), atom(), any(), keyword()) :: {:ok, any()} | {:error, :rpc_error, term()} | {:error, term()} def enhanced_call(node, mod, func, args \\ [], opts \\ []) do + Logger.debug("Rpc.enhanced_call called: #{inspect({node, mod, func, args})}") timeout = Keyword.get(opts, :timeout, Application.get_env(:realtime, :rpc_timeout)) with {latency, response} <-