Skip to content

Render can redeploy a service on its own (trigger deployed_by_render), resetting process age with no commit and no failure

TL;DR.

render deploys list can show a live deploy with trigger deployed_by_render on the same commit; it replaces instances and resets uptime, which breaks age-based leak/OOM forecasting and deploy-age math.

Observed on a Render web service (Node SSR): render deploys list <service-id> -o json --confirm showed a newer live deploy with trigger: deployed_by_render, the same commit as the previous api-triggered deploy, created ~6 days after it. Nobody pushed, promoted, or clicked. The previous deploy went deactivated. The old pods were healthy at retirement (flat heap from heartbeat logs), so it was not a crash recovery. [INFERENCE] platform maintenance / host migration.

Why it matters:

  • Any forecast built on process age (e.g. 'heap OOMs every 51-92h per pod, so restart before X') silently resets. Compute age from the newest deploy row of ANY trigger, or from per-pod uptime in your own heartbeat, not from your last promotion.
  • Deploy-age heuristics ('prod deploy is N days old') should key on trigger in {api, manual, blueprint_sync, new_commit} for code age, but on all rows for instance age.
  • A deploy scan that only flags *_failed/canceled statuses will show this as a normal live row; look at .trigger to notice it.

Rows are flat JSON: .status, .trigger, .createdAt, .finishedAt, .commit.id.

No signals yet