Incident Library
Applied filters Root causeBreaking change in an upgradeSymptomHigh latencyFactorUnreviewed defaultsClear allEvery case under the filters, with no sentence; newest first.
Suggested filters Search, and the values found in your words appear here.

Graph

  • Root cause
  • Component
  • Symptom
  • Contributing factor
  • Case

Cases2 cases

1 to 2 of 2

  1. Symptoms

    After Classi moved the search engine behind its Portfolio feature from Elasticsearch 6.8 to Amazon OpenSearch Service 1.3, the team saw in post-migration metrics that search responses were sometimes much slower. Most searches returned normally, but latency jumped at a certain frequency.

    Trigger

    The migration from Elasticsearch 6.8 to OpenSearch 1.3, with indices that had no explicit refresh_interval.

    Root cause
    Component
    Contributing factor
    Detection

    The team noticed latency spikes in metrics checked after the migration and compared the maximum search latency before and after the migration in Datadog APM.

    Remediation
    • Set refresh_interval explicitly to 3s, which sharply reduced the latency spikes
    • Set refresh_interval explicitly to 1s in production
    Lessons

    The took value in OpenSearch's responses was already large, which could have narrowed the investigation to OpenSearch sooner. The slow log and the Profile API alone did not find the cause; asking when searches became slow, instead of where, led to the fix. The same setting can behave differently between versions, so defaults have to be checked as well.

  2. Symptoms

    At 11:48 UTC on 22 September 2025, minutes after Railway had resolved a dashboard outage, its control plane showed abnormal resource consumption and elevated API latency. A large backlog of deployments queued during the first outage had started all at once, and the control plane began returning elevated database errors.

    Trigger

    After a dashboard outage caused by a schema change was fixed, a large backlog of queued deployments started at the same time and put the control plane and its database, behind a newly upgraded PgBouncer, under heavy load.

    Root cause
    Component
    Contributing factor
    Detection

    Users reported at 11:05 UTC that the project canvas failed to load; the control plane's abnormal resource consumption and elevated API latency were seen at 11:48 UTC and opened as a new incident.

    Remediation
    • Deployed a fix for the API failure caused by the schema change within 15 minutes
    • Suspended deployments for non-Pro users so Pro users could deploy and the queue could drain
    • Suspended all deployments, Pro included, for up to 20 minutes during peak instability
    • Scaled up the control plane database's CPU, memory, connection limits and IOPS
    • Rolled PgBouncer back to the previous stable version, which brought all metrics back to nominal
    • Re-enabled deployments for all non-Pro users
    • Fixed the edge case in which private networks and their endpoints were missing from the dashboard
    Action items
    • Re-engineer parts of the control plane to be more resilient, moving large parts of its storage layer away from Postgres
    • Add CI validation that keeps disruptive schema changes out of production and automated schema compatibility checks before backend deployments
    • Monitor and alert on PgBouncer node CPU, memory and connection pool utilization
    • Upgrade PgBouncer in phases, instance by instance, instead of everywhere at once
    Lessons

    Railway believes that without the breaking schema change reaching production the cascade would not have happened, that monitoring PgBouncer's own CPU, memory and pool metrics would have shown the performance regression earlier and shortened recovery, and that upgrading PgBouncer instances one at a time would have exposed the version-specific problem before it reached every instance.

Check your cluster for this

These 2 cases involve Database and Database proxy and connection pooler. kubegap audits a Kubernetes cluster for gaps like these, read-only, from Claude Code or Codex; its checks cite public reports like the ones in this library.

By root cause1