- Add retry: false to VISP Client HTTP requests - Add retry: false to ReleaseChecker GitHub API requests - Remove unused Plug.Conn import from RemoteIpLogger - Remove unused default parameter from req_get/2 Results: - VISP sync test: 7007ms → 113ms (62x faster) - ReleaseChecker test: 7004ms → 17ms (402x faster) - UserResetPasswordLive test: 1495ms → 284ms (5x faster) Req's default retry behavior (1s, 2s, 4s exponential backoff) was causing 7-second delays for HTTP 500/503 error responses in tests. For these clients, immediate failure is preferred over retries.
48 lines
1.3 KiB
Elixir
48 lines
1.3 KiB
Elixir
defmodule ToweropsWeb.MaintenanceLive.Index do
|
|
@moduledoc false
|
|
use ToweropsWeb, :live_view
|
|
|
|
alias Towerops.Maintenance
|
|
alias ToweropsWeb.MaintenanceLive.Helpers
|
|
|
|
@impl true
|
|
def mount(_params, _session, socket) do
|
|
organization = socket.assigns.current_scope.organization
|
|
|
|
{:ok,
|
|
socket
|
|
|> assign(:page_title, t("Maintenance Windows"))
|
|
|> assign(:filter, "all")
|
|
|> assign(:timezone, socket.assigns.current_scope.timezone)
|
|
|> load_windows(organization.id)}
|
|
end
|
|
|
|
@impl true
|
|
def handle_params(params, _url, socket) do
|
|
filter = Map.get(params, "filter", "all")
|
|
|
|
{:noreply,
|
|
socket
|
|
|> assign(:filter, filter)
|
|
|> load_windows(socket.assigns.current_scope.organization.id)}
|
|
end
|
|
|
|
defp load_windows(socket, org_id) do
|
|
filter_atom =
|
|
case socket.assigns.filter do
|
|
"active" -> :active
|
|
"upcoming" -> :upcoming
|
|
"past" -> :past
|
|
_ -> nil
|
|
end
|
|
|
|
opts = if filter_atom, do: [filter: filter_atom], else: []
|
|
windows = Maintenance.list_windows(org_id, opts)
|
|
assign(socket, :windows, windows)
|
|
end
|
|
|
|
defdelegate status_for(window), to: Helpers
|
|
defdelegate scope_label(window), to: Helpers
|
|
defdelegate format_datetime(dt, timezone), to: Helpers
|
|
defdelegate status_label(status), to: Helpers
|
|
end
|