heroku / heroku/roadmap

Rolling Deploys Cause Prolonged Downtime During Redis/Postgres Maintenance (Stale Connection Strings)

Open
#351 0 comments 0 reactions 0 assignees View on GitHub
Data Proposed
Dominant language
No language data
Stars
225
Forks
19
PR merge metrics
No merged PRs in 30d

Description

### Required Terms

- [x] I agree to follow this project's [Code of Conduct](https://github.com/heroku/roadmap/blob/main/CODE_OF_CONDUCT.md)
- [x] I have read and accept the [Salesforce Program Agreement](https://www.salesforce.com/company/program-agreement/)

### What service(s) is this request for?

Heroku dynos

### Tell us about what you're trying to solve. What challenges are you facing?

During Redis maintenance, our application experienced ~10 minutes of downtime because Rolling Deploys restarted dynos sequentially instead of all at once. This caused any dynos that hadn’t yet restarted to keep using the old `REDIS_URL`, leading to failed requests until they were cycled.

Previously, we mitigated this by disabling Preboot, which caused all dynos to restart simultaneously and significantly shortened maintenance windows. However, with Rolling Deploys, there’s currently no way to disable or override this behavior during maintenance events (e.g., Redis or Postgres).

**Problem:**
When Rolling Deploys are enabled, maintenance events that change connection strings (like `REDIS_URL` or `DATABASE_URL`) can cause prolonged downtime—especially for apps with many dynos—since dynos restart one at a time and maintain stale connections until replaced.

**Impact:**

* Prolonged downtime during maintenance (in our case, 51k failed requests over ~10 minutes).
* The issue scales with the number of dynos—larger apps experience longer outages.
* There’s no current workaround except manually scaling down dynos before maintenance.

See this support ticket for more context: https://help.heroku.com/sharing/9631b6f5-f12b-4390-a0d7-3920893683f0

**Goal:**
We want to minimize downtime during maintenance, regardless of the specific approach.

**Potential Solutions:**
- Automatically disable or bypass Rolling Deploys during maintenance events that change connection strings.
- Add a “simultaneous restart” option for maintenance mode.
- Provide a configuration flag to control Rolling Deploy behavior specifically for maintenance events.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.