Memory leak in new release: symptoms, cause, and the test that catches it
Memory grows per request or per screen until processes restart or the app is killed.
Memory leak in new release is documented by 3 accepted public reports from 2 organisations, 2 of them published in the last 5 years.
- Likelihood: low (2 public reports in 5 years)
- Impact: medium (2 of 2 reports: availability)
Symptoms
User-visible
- A number of pages returned 404 responses that should not have, because authorization checks failed.[1]
- Git operations, issues, pull requests, API requests and webhooks were degraded at the same time.[1]
- 3.35% of Git requests returned 500 errors.[2]
- The 500 errors came from specific file server nodes that had become unresponsive.[2]
Monitoring-visible
- Pods of the authorization service crashed repeatedly under high load from 6:42 PM UTC.[1]
- Alerts triggered at 6:44 PM UTC, seven minutes after the change reached production.[1]
- Memory built up on one file server from August 14 and reset each time the node was redeployed.[2]
- Goroutine memory grew on the canary file server after the last deploy.[3]
- The same leak error was also seen on staging.[3]
Root causes
- stage: code A performance and resilience optimisation to an authorization microservice contained a memory leak that high traffic exposed.[1]
- stage: release-process The canary ring did not send enough traffic to the authorization service to reveal the leak, so the build graduated to production.[1]
- stage: code A new adaptive limiter in the Git storage service created a memory leak on file server nodes.[2]
- stage: code A change to the Git storage service introduced a goroutine leak, and one merge request was identified as the most likely cause.[3]
Public examples
- [1]GitHub, 2023-11-03. A performance and resilience optimisation to GitHub's authorization microservice contained a memory leak exposed under high traffic; pods crashed repeatedly, authorization checks failed and pages returned 404s until the change was rolled back. primary Incident with Git Operations, Issues, Pull Requests, Actions, API Requests, Codespaces, Packages, Pages and Webhooks
- [2]GitLab, 2023-08-16. A new adaptive limiter deployed in Gitaly caused memory to build up on a GitLab file server from 14 August 2023 until specific Gitaly nodes became unresponsive and 3.35 percent of Git requests returned 500 errors; the commit was reverted. primary 2023-08-16: Connection errors on gitaly causing 500s (#16187)
- [3]GitLab, 2021-09-21. After a deploy to the GitLab canary file server, a Gitaly goroutine leak caused memory to grow; a Gitaly merge request was identified as the likely cause and the server was rolled back to the previous package version. primary 2021-09-21 Gitaly goroutine memory leak on file-cny-01 since last deploy (#5566)
Test classes that catch it
| Test class | Stage | Limitation | Basis |
|---|---|---|---|
| Canary and progressive delivery checks | post-deploy | The canary ring in report [1] did not expose the authorization service to enough traffic to discover the leak, so the build graduated to production at 6:37 PM UTC. | cited in [1] |
| Load and performance tests | pre-deploy | A load test shorter than the growth period misses the leak in report [2], where file server memory built up from August 14 until nodes stopped responding. | by design analysis |
| Unit tests | pre-merge | A goroutine leak check in unit tests covers only the code paths the tests run, so it misses a leak that appears only under high production traffic, as in report. | by design analysis |
Risk
- Likelihood: low (2 public reports in 5 years)
- Impact: medium (2 of 2 reports: availability)
| Accepted public reports | 2 |
|---|---|
| Published in the last 5 years | 2 |
| Impact stated: availability | 2 |
Pre-release checklist
- PR-01
- PR-02
- PR-03
- PR-04
- PR-05
- PR-06
First 30 minutes
- FM-01
- FM-02
- FM-03
- FM-04
- FM-05
- FM-06
- FM-07
Download the checklist
What catches this: catalogue entries
Listed because their own documentation or site names canary and progressive delivery checks, load and performance tests, unit tests on the verification date. Alphabetical. Not a recommendation.
Tools whose documentation names these test classes
- Argo Rollouts canary source verified 2026-10-21
- Artillery load source verified 2026-10-21
- Drill load source verified 2026-10-21
- Flagger canary source verified 2026-10-21
- Gatling load source verified 2026-10-21
- Grafana k6 load source verified 2026-10-21
- GrowthBook canary source verified 2026-10-21
- hey load source verified 2026-10-21
- Jest unit source verified 2026-10-21
- JUnit unit source verified 2026-10-21
- Karate load source verified 2026-10-21
- Kayenta canary source verified 2026-10-21
- LaunchDarkly canary source verified 2026-10-21
- Locust load source verified 2026-10-21
- Nightwatch unit source verified 2026-10-21
- oha load source verified 2026-10-21
- Postman load source verified 2026-10-21
- pytest unit source verified 2026-10-21
- RSpec unit source verified 2026-10-21
- Spinnaker canary source verified 2026-10-21
- TestMu AI (formerly LambdaTest) load source verified 2026-10-21
- TestNG unit source verified 2026-10-21
- Unleash canary source verified 2026-10-21
- Vitest unit source verified 2026-10-21
- WebdriverIO unit source verified 2026-10-21
- XCTest unit source verified 2026-10-21
Providers whose site names these test classes
- 2i load source verified 2026-10-21
- Abstracta load source verified 2026-10-21
- andagon people GmbH load source verified 2026-10-21 unit source verified 2026-10-21
- Appmatics load source verified 2026-10-21
- AQA Masters load source verified 2026-10-21
- BugRaptors load source verified 2026-10-21
- Cleverix load source verified 2026-10-21
- Crestech Software Systems load source verified 2026-10-21
- Crowdar load source verified 2026-10-21
- DeviQA load source verified 2026-10-21
- Elinext load source verified 2026-10-21
- Exactpro load source verified 2026-10-21
- Full Scale load source verified 2026-10-21
- Inmetrics load source verified 2026-10-21 unit source verified 2026-10-21
- Invensis Technologies load source verified 2026-10-21
- iScale Solutions load source verified 2026-10-21
- Itekako load source verified 2026-10-21
- iValuePlus Services load source verified 2026-10-21
- Nimble Approach load source verified 2026-10-21
- Outpost QA load source verified 2026-10-21
- PLATO load source verified 2026-10-21
- Polteq load source verified 2026-10-21
- QA Madness load source verified 2026-10-21
- QA Mentor load source verified 2026-10-21 unit source verified 2026-10-21
- QASource load source verified 2026-10-21
- QAwerk load source verified 2026-10-21
- Quality House load source verified 2026-10-21
- Quality Island load source verified 2026-10-21
- QualityKiosk Technologies load source verified 2026-10-21
- QualityLogic load source verified 2026-10-21
- Saigon Technology load source verified 2026-10-21
- SHIFT ASIA load source verified 2026-10-21
- SimplyTest GmbH load source verified 2026-10-21
- Sofka Technologies load source verified 2026-10-21
- Soflab Technology load source verified 2026-10-21
- SQA - Software Quality Assurance S.A. load source verified 2026-10-21
- SunTec India load source verified 2026-10-21
- T2S Tecnologia load source verified 2026-10-21 unit source verified 2026-10-21
- TestFort load source verified 2026-10-21
- Testhouse load source verified 2026-10-21
- Testing IT load source verified 2026-10-21
- TestMatick load source verified 2026-10-21
- Testrig Technologies load source verified 2026-10-21
- Testscenario load source verified 2026-10-21
- TestSolutions GmbH load source verified 2026-10-21
- VTEST load source verified 2026-10-21
- Zoonou load source verified 2026-10-21
Only on this page
In report [1], memory leak in new release took 7 minutes to detect. The authorization service change graduated to production at 6:37 PM UTC. Pods crashed repeatedly under high load from 6:42 PM UTC. Alerts triggered at 6:44 PM UTC. The rollback completed at 7:08 PM UTC, delayed because parts of the deployment infrastructure relied on the authorization service and needed manual intervention.
The 7 minutes in report [1] are short because high traffic exposed the leak within minutes of graduation. In report [2], the leak built up on one file server from August 14 and no time to detect in minutes is published. In report [3], the leak showed on the canary file server, which was drained and rolled back to the previous package version.
Related incidents
- Connection pool exhausted A new code path leaks or holds connections and the pool runs out under load.
- Background job queue backlog A job change slows processing and the queue grows faster than it drains.
- Cache invalidation storm A deploy flushes or invalidates caches at once and origin load spikes.
- Thundering herd on restart Clients reconnect simultaneously after a rolling restart and overload a dependency.
- Cold start latency regression Serverless or container cold starts become slower after a dependency or image change.
Questions
What causes memory leak in new release?
All three accepted reports name a code change: an authorization service optimisation [1], a new adaptive limiter [2] and a goroutine leak [3]. Report [1] adds a release-process cause, a canary ring with too little traffic to reveal the leak.
What are the symptoms of memory leak in new release?
Users see wrong 404 responses [1] or 500 errors on 3.35% of Git requests [2]. Monitoring shows pods crashing repeatedly [1] and memory that builds up and resets on redeploy [2].
Which test class catches memory leak in new release, and what does it miss?
Canary checks carry the cited label from report [1], which states that its canary ring did not get enough traffic to discover the leak. Load tests and unit tests are listed with the by-design label.
Which public reports document memory leak in new release?
Three primary reports are accepted, published between September 2021 and November 2023. One covers an authorization service [1] and two cover file servers of a Git storage service [2] [3].
How long did it take to detect memory leak in new release in the public reports?
Report [1] measures 7 minutes from production graduation at 6:37 PM UTC to alerts at 6:44 PM UTC. The other two reports publish no time to detect in minutes.
Should a team roll back or fix forward when memory leak in new release happens?
All three reports reverted or rolled back the change. Report [2] restarted the server every hour as a workaround until the revert shipped, which FM-05 on this page reflects.
Release Incident Playbook (2026). Memory leak in new release: symptoms, cause, and the test that catches it, content version 1.0.0. https://releasefailures.com/incidents/memory-leak-in-new-release/. Accessed 2026-10-21.