During the 2026-07-05 Redis incident the healthcheck's status line read Redis cluster status: fail — 5 healthy, 0 unhealthy node(s) while node_details showed three Connected: false gossip entries (:0@0 ghosts) and 5461 failed slots. The healthy/unhealthy counters appear to count only configured endpoints that accept a TCP connection, not cluster-membership health — so the summary contradicted the payload and understated the incident.
Fix: derive node counts from CLUSTER NODES connectivity (gossip view) rather than endpoint reachability, or report both explicitly (reachable_endpoints vs cluster_nodes_connected), and surface cluster_slots_fail > 0 in the description prominently. The Unhealthy overall verdict was correct (cluster_state drove it) — this is about the human-readable summary lying. Small change in the API's Redis health check implementation + unit test with a ghost-node CLUSTER NODES fixture.
During the 2026-07-05 Redis incident the healthcheck's status line read `Redis cluster status: fail — 5 healthy, 0 unhealthy node(s)` while `node_details` showed three `Connected: false` gossip entries (`:0@0` ghosts) and 5461 failed slots. The healthy/unhealthy counters appear to count only configured endpoints that accept a TCP connection, not cluster-membership health — so the summary contradicted the payload and understated the incident.
**Fix:** derive node counts from `CLUSTER NODES` connectivity (gossip view) rather than endpoint reachability, or report both explicitly (`reachable_endpoints` vs `cluster_nodes_connected`), and surface `cluster_slots_fail > 0` in the description prominently. The `Unhealthy` overall verdict was correct (cluster_state drove it) — this is about the human-readable summary lying. Small change in the API's Redis health check implementation + unit test with a ghost-node CLUSTER NODES fixture.
spikerj
added the bug label 2026-07-05 02:59:40 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
During the 2026-07-05 Redis incident the healthcheck's status line read
Redis cluster status: fail — 5 healthy, 0 unhealthy node(s)whilenode_detailsshowed threeConnected: falsegossip entries (:0@0ghosts) and 5461 failed slots. The healthy/unhealthy counters appear to count only configured endpoints that accept a TCP connection, not cluster-membership health — so the summary contradicted the payload and understated the incident.Fix: derive node counts from
CLUSTER NODESconnectivity (gossip view) rather than endpoint reachability, or report both explicitly (reachable_endpointsvscluster_nodes_connected), and surfacecluster_slots_fail > 0in the description prominently. TheUnhealthyoverall verdict was correct (cluster_state drove it) — this is about the human-readable summary lying. Small change in the API's Redis health check implementation + unit test with a ghost-node CLUSTER NODES fixture.Resolved in spikersoft-backend PR #84 (merged to
master). The "Redis Cluster" healthcheck summary now derives fromCLUSTER NODESgossip membership, not endpoint TCP-reachability:"fail — 3 master(s)/2 replica(s) connected, 3 gossip node(s) disconnected, 5461/16384 slots failing"instead of the contradictory "5 healthy, 0 unhealthy." New pureBuildClusterSummaryseam, ghost-node + healthy fixtures, verdict logic unchanged, all data keys preserved + gossip/slot keys added. 32/32 tests. Closing.