Incident Library

IL-0536 Amazon Web Services · 2014-06-13awsdatabase

Amazon SimpleDB in US East returned HTTP 500 to nearly all API calls for two hours after its nodes left the cluster

SimpleDB is a distributed datastore that replicates customer data across multiple data centers. Storage nodes hold user data, with each customer Domain replicated across a group of storage nodes, and metadata nodes record which storage nodes hold each Domain. An internal lock service, itself replicated across data centers, decides which nodes are responsible for a Domain, and every node handshakes with it periodically to confirm that it still owns its data or metadata. When power loss took down several storage nodes in one data center at once, the lock service had to de-register them from their replication groups quickly, and this sudden load raised the handshake latency for the healthy nodes. The healthy storage and metadata nodes could not finish their handshakes within the configured handshake timeout, and after several retries and timeouts the nodes removed themselves from the production cluster, so API requests failed with HTTP 500.

A storage node can only rejoin the cluster after a metadata node authorizes it, which keeps nodes with stale data out, but the metadata nodes had removed themselves for the same reason and could not authorize anyone. Engineers raised the handshake timeout values by hand and restarted a subset of metadata nodes, which then authorized the storage nodes to rejoin. At 11:16 PM PDT all APIs except CreateDomain and DeleteDomain worked normally. Those two calls are served by the metadata nodes, so the two calls were throttled until 1:30 AM to let the rest of the metadata nodes recover safely.

Severity
–
Scope
All SimpleDB API calls except a fraction of eventually consistent reads for two hours, then elevated errors for CreateDomain and DeleteDomain for a little over two more hours
Users affected
SimpleDB customers
Region
US East
Time to detect
–
Time to resolve
4h 14m

Symptoms

From 9:16 PM to 11:16 PM PDT on June 13, Amazon SimpleDB in the US East Region was unavailable to all API calls except a fraction of eventually consistent reads, and SimpleDB API requests returned server-side errors (http response code 500).

After 11:16 PM most APIs worked again, but CreateDomain and DeleteDomain calls kept elevated error rates until 1:30 AM, because AWS deliberately throttled them while the remaining metadata nodes recovered.

Symptom Service outageHigh error rate

Root cause

Trigger
Power was lost to the servers that hosted several SimpleDB storage nodes in a single data center, and those storage nodes became unavailable at the same time.

Detection

–

Remediation

Action items

Lessons

The short handshake timeout had been chosen to detect replica failures quickly, and AWS concluded it was too low. Nodes removing themselves from the cluster right after several handshake timeouts widened the event and caused the API errors; the nodes should have waited and retried with a longer timeout.

Sources

Related cases

Check your cluster for this

kubegap audits a Kubernetes cluster for conditions like the ones in this case, Database, Coordination and key-value store, Data center power and cooling 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.