Component and version
ns8-core (ghcr.io/nethserver/core:3.21), HTTP routes settings page
Steps to reproduce
- Set up a cluster with at least 2 nodes, each running a traefik instance (traefik1 on node1, traefik2 on node2).
- Stop the traefik service on node2 only, keep the node itself online:
runagent -m traefik2
systemctl stop --user traefik
- 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
Component and version
ns8-core (ghcr.io/nethserver/core:3.21), HTTP routes settings page
Steps to reproduce
/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-routestask.Suggested fix or workaround
In
core/ui/src/components/settings/HttpRoutesPanel.vue,listRoutes()/listRoutesAborted()(around lines 572-641) use a single sharedthis.error.listRoutesstring overwritten on every loop iteration overtraefikInstances, 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.vueto track errors per traefik instance so nodes that do answer keep rendering, and checking whether thelist-routesbackend 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