ci(e2e): stop gunicorn worker recycling mid-run; slow-test budget for mixed-chart filter spec - #42867
ci(e2e): stop gunicorn worker recycling mid-run; slow-test budget for mixed-chart filter spec#42867sadpandajoe wants to merge 2 commits into
Conversation
The E2E backend runs with `--workers 1` (deliberately — multi-worker exposes races in the SQL Lab to Explore flow) alongside `--max-requests 500 --max-requests-jitter 50`. With one worker there is nothing to roll over to, so every recycle takes the whole backend offline: gunicorn drains for the full 30s graceful timeout because browser keep-alive connections stay open, then the replacement worker spends ~5s booting Superset. A Playwright run issues roughly 3800 requests over ~8 minutes, so the cap fired seven times, producing seven ~35s total outages. Specs that happened to navigate during one timed out waiting for the page to render and were rescued by retries — visible as "flaky" rather than as failures. Cypress runs hit the same windows, absorbed by `cypress_run.py --retries 5`. Lowering `--graceful-timeout` is not sufficient: even at 5s the gap exceeds the 6-10s a dashboard load plus chart render needs. Removing the recycle removes the outage, and there is no leak evidence to justify keeping it for an 8-minute process. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Every other dashboard spec that builds its fixtures over the API — the clear-all-filters, gauge-interval, and dashboard-controls specs — raises its budget to TIMEOUT.SLOW_TEST. This one did not, so it ran on the 30s config default despite doing four API round-trips before a full dashboard load with a preselected native filter. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Code Review Agent Run #10ba52Actionable Suggestions - 0Review Details
Bito Usage GuideCommands Type the following command in the pull request comment and save the comment.
Refer to the documentation for additional commands. Configuration This repository uses Documentation & Help |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #42867 +/- ##
==========================================
+ Coverage 65.73% 66.29% +0.55%
==========================================
Files 2843 2857 +14
Lines 162666 162825 +159
Branches 37239 37356 +117
==========================================
+ Hits 106926 107940 +1014
+ Misses 53647 52792 -855
Partials 2093 2093
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
SUMMARY
Two small E2E follow-ups discovered while working on the edit-mode Playwright migration (#41438), which had already merged before these were pushed:
--workers 1alongside--max-requests 500 --max-requests-jitter 50. With one worker there is nothing to roll over to, so every recycle takes the whole backend offline: gunicorn drains for the full 30s graceful timeout (browser keep-alive connections hold it open), then the replacement worker spends ~5s booting. A Playwright run issues roughly 3800 requests over ~8 minutes, so the cap fired seven times, producing seven ~35s outages — visible as flaky tests (retried past a hung navigation) rather than as an infra failure. Removing the recycle removes the outage; there's no leak evidence over an 8-minute process to justify keeping it.mixed-chart-dashboard-filters.spec.tsthe slow-test budget. Every sibling dashboard spec that builds its fixtures over the API (clear-all-filters, gauge-interval, dashboard-controls) raises its timeout toTIMEOUT.SLOW_TEST. This one didn't, despite doing four API round-trips before a full dashboard load with a preselected native filter.TESTING INSTRUCTIONS
playwright-tests/playwright-tests-requiredshould show fewer/no flaky retries tied to worker-recycle windows.mixed-chart-dashboard-filters.spec.tsruns under its own budget instead of the 30s default.ADDITIONAL INFORMATION