Migrated accounts show stale balances

On-call incidentHard40 minStripe style

Your task

You're migrating a wallets table from an old Postgres store to a new sharded store using a dual-write + gradual read-cutover: a router decides per account_id whether reads go to old or new based on a 'migrated' flag set when each account's data is copied. At 16:00 you bumped the read-cutover from 10% to 60% of accounts. Within minutes, support reports a slice of users seeing stale balances, a deposit made an hour ago is missing on refresh, then reappears. Dashboards: error rate flat, both stores healthy, replication current. How do you triage, stop serving stale data, and reconcile?

It covers

  • Dual read
  • Cutover
  • Routing
  • Stale source