Incident Library

IL-0295 Pusher · 2022-04-11database

Pusher's Channels publish API on the mt1 cluster was largely unavailable for 11 minutes while a Redis master failed over

Pusher runs Redis in groups of one master and two replicas, and since the beginning of November 2021 had been moving all groups to a new version of its Redis group module. Every node of the new groups runs a script at node termination that checks whether the node is a Redis master and, if it is, starts a failover to one of the replicas. To help the clusters cope with more traffic, Pusher increased the replication buffer size in the Redis configuration of every group, which needed each Redis node to be restarted; this had already been done on test clusters and on one smaller production cluster.

At 08:47 UTC an engineer began replacing nodes in the mt1 cluster and restarted both replica nodes of one Redis group, one at a time, without problems. At 10:42 the engineer did the same for the master. The failover started, but the Redis process was terminated before it completed. The shutdown script assumed that once the failover command had run successfully, the node could be terminated; on most clusters failover finishes before the Redis process is killed, but on a heavily loaded cluster such as mt1 the node terminated during failover and left the group in an inconsistent state that takes longer to recover from than no failover at all. After a period in which the old and new masters contended for leadership, the group recovered at 10:53 and the new master handled all messages.

Severity
–
Scope
Publishing to Channels on the mt1 cluster largely unavailable; messages delayed or lost
Users affected
–
Region
–
Time to detect
–
Time to resolve
11m

Symptoms

At 10:42 UTC on 11 April 2022, the API for publishing messages to Pusher Channels on the mt1 cluster became largely unavailable, and from about 10:44 requests to the MT1 API returned more errors.

Until 10:53, users could fail to publish messages, receive messages late with more than 900ms end-to-end latency, or not receive messages at all, and some messages may have been lost. During this time the old and the new master of one Redis group were both contending for leadership.

Symptom Service outageHigh latencySplit brain

Root cause

Trigger
An engineer restarted the master node of an mt1 Redis group to apply a larger replication buffer, after restarting both replicas of that group.

Detection

Pusher saw error rates rise for requests to the MT1 API from about 10:44 UTC.

Remediation

–

Action items

Lessons

–

Sources

Related cases

Check your cluster for this

kubegap audits a Kubernetes cluster for conditions like the ones in this case, In-memory cache, Database failover manager among them, read-only, from Claude Code or Codex. Its checks cite public reports like this one.

For AI tools and scripts

The API needs no key. The MCP server offers search_incidents, get_incident, list_incidents, get_topic and vocab; both are explained on API and MCP.