Skip to content

Commit b143f9b

Browse files
committed
Consider metric checks for disconnected status
The connectivity status is now determined by `Met` output as well as pubsub connectivity. This should make it easier to identify metric issues on solo nodes, e.g. in dev or a staging environment. Closes #127
1 parent 1b391e0 commit b143f9b

File tree

1 file changed

+23
-4
lines changed

1 file changed

+23
-4
lines changed

lib/oban/web/live/connectivity_component.ex

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
11
defmodule Oban.Web.ConnectivityComponent do
22
use Oban.Web, :live_component
33

4-
alias Oban.Notifier
4+
alias Oban.{Met, Notifier}
55

66
@refresh :timer.seconds(15)
77

88
@impl Phoenix.LiveComponent
99
def update(assigns, socket) do
10-
status = Notifier.status(assigns.conf)
10+
checks = Met.checks(assigns.conf.name)
11+
12+
status =
13+
assigns.conf.name
14+
|> Notifier.status()
15+
|> determine_status(checks)
1116

1217
title =
1318
case status do
14-
:isolated -> "Node is isolated, updates disabled"
15-
:solitary -> "Node is solitary, not in a cluster"
19+
:isolated -> "Node is isolated: Updates are disabled"
20+
:solitary -> "Node is solitary: Not connected to any cluster"
21+
:disconnected -> "Node is disconnected: No metrics, queues, or nodes detected"
1622
_ -> ""
1723
end
1824

@@ -28,12 +34,25 @@ defmodule Oban.Web.ConnectivityComponent do
2834
{:ok, socket}
2935
end
3036

37+
defp determine_status(pubsub, checks) do
38+
cond do
39+
Enum.empty?(checks) -> :disconnected
40+
pubsub == :isolated -> :isolated
41+
pubsub == :solitary -> :solitary
42+
true -> :connected
43+
end
44+
end
45+
3146
@impl Phoenix.LiveComponent
3247
def render(assigns) do
3348
~H"""
3449
<div id="connectivity" data-title={@title} phx-hook="Tippy">
3550
<Icons.bolt_circle :if={@status == :solitary} class="w-6 h-6 text-orange-500" />
3651
<Icons.bolt_slash :if={@status == :isolated} class="w-6 h-6 animate-pulse text-red-500" />
52+
<Icons.exclamation_circle
53+
:if={@status == :disconnected}
54+
class="w-6 h-6 animate-pulse text-red-500"
55+
/>
3756
</div>
3857
"""
3958
end

0 commit comments

Comments
 (0)