Show backup-listing failures and stop the create button crashing on big databases - #2101
Conversation
…t budget The Backups page hid every storage-listing failure behind "No backups found", so an operator could not tell an empty folder from a broken listing — the state that makes CI-made backups seem to vanish. The page now says when the listing failed and why, and names the storage folder (and Bunny zone) it reads, so a mismatch with the folder the CI job uploads to is visible at a glance. A failed Bunny listing also throws a clear "HTTP <status>" error instead of feeding the error body into the file filter. The "Create backup now" button used to crash mid-dump with a raw "Subrequest allowance exceeded" error once the database outgrew the edge's 50-call request budget. The dump's cost is now priced up front from one batched row count; when it cannot fit, the page replaces the button with a plain explanation pointing at the out-of-band `deno task backup`, and a direct POST refuses with the same message before touching any table. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A5kRwqm349kpsgkcQLeSpw
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 28 minutes Limit details: You’ve used all 3 included reviews currently available under your plan. You completed 72 included PR reviews in the past 7 days; at that activity level, included reviews refill at 3 reviews per hour. Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (12)
Comment |
Why
Two linked problems on the Backups page:
Backups made by the CI job did not show under "Existing backups". The page swallowed every storage-listing failure and showed "No backups found", so an empty folder, a wrong storage key, and a zone or folder mismatch with the CI upload all looked identical. Worse, a failed Bunny listing (for example a 401 from a bad key) fed Bunny's JSON error object into the file filter and crashed with a meaningless TypeError — which the page then hid.
Clicking "Create backup now" crashed with
Subrequest allowance exceeded: 51 database + 0 external callsonce the database grew past what one edge request can dump. Bunny allows 50 subrequests per request, and the dump reads each table in 500-row pages, so a big enough database can never finish from the page. The button kept promising something it could not do.What changed
deno task backup(which has no size limit and uploads to the same place), and a direct POST refuses with the same message instead of crashing partway through.Why the CI backups are probably invisible
The CI job and the page use the same code (
{db-name}/backup-{timestamp}.zipin the configured zone), so with identical secrets the backups must appear. They differ only in environment, which leaves these candidates — the new page copy makes it possible to tell them apart:STORAGE_ZONE_NAME/STORAGE_ZONE_KEYsecrets name a different zone than the site's own storage settings.DB_URLsecret points at a different address than the site'sDB_URL(for example after a Turso migration), so CI writes into a different per-database folder.{db-name}/.Tests
BACKUP_PAGE_SIZE=1and one hundred batch-seeded log rows, the page swaps the button for the explanation and a direct POST redirects with the plain error.deno task precommitpasses.deno task precommit:mutationis running; survivors, if any, will be resolved before merge.🤖 Generated with Claude Code
https://claude.ai/code/session_01A5kRwqm349kpsgkcQLeSpw
Generated by Claude Code