Skip to content

HTTP routes page fails entirely when one node's traefik service is stopped #8171

Description

@stephdl

Component and version

ns8-core (ghcr.io/nethserver/core:3.21), HTTP routes settings page

Steps to reproduce

  1. Set up a cluster with at least 2 nodes, each running a traefik instance (traefik1 on node1, traefik2 on node2).
  2. Stop the traefik service on node2 only, keep the node itself online:
    runagent -m traefik2
    systemctl stop --user traefik
    
  3. Open Settings > HTTP routes, with "Show" set to "Any node" (/cluster-admin/#/settings/http-routes?selectedNodeId=all).

Expected behavior

Node1's traefik instance is healthy and should return its routes. The page should render node1 routes and separately signal that node2's traefik instance is unreachable, isolating the failure to that one node instead of blocking the whole page.

Actual behavior

The whole HTTP routes page fails to load: a single generic error banner ("List routes - Something went wrong") is shown, and no route is displayed at all, even from the healthy node1 instance. Browser console shows an error for the list-routes task.

Suggested fix or workaround

In core/ui/src/components/settings/HttpRoutesPanel.vue, listRoutes() / listRoutesAborted() (around lines 572-641) use a single shared this.error.listRoutes string overwritten on every loop iteration over traefikInstances, with no per-instance error tracking and no distinction between "node offline" and "traefik service down but node reachable". A failure on one instance stomps the shared error state and the whole table gets treated as failed.

core/ui/src/components/settings/TlsCertificatesPanel.vue, listCertificates() (around lines 740-833) already keeps a per-instance error array (offlineTraefikInstances, listCertificatesErrors) instead of one shared string. That pattern could be reused here for the per-instance isolation, though the certificates page has its own gap in detecting a stopped traefik service (see related issue).

Suggest reworking HttpRoutesPanel.vue to track errors per traefik instance so nodes that do answer keep rendering, and checking whether the list-routes backend action should degrade gracefully (empty result + status) when the local traefik process is not running, instead of aborting the task.

Relevant logs or output

Screenshot attached: HTTP routes page shows only the generic error banner, no data table, no per-node distinction.

mattermost talk : https://mattermost.nethesis.it/nethesis/pl/5ikio8myypn4jyuema5uj4agxy

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions