Cloudflare D1: Integrity check occasionally damages database without self-recovery
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 3.7k
- Forks
- 746
- Avg merge
- 1d 16h
- Merged PRs (30d)
- 3
Description
Environment
| Operating system | macOS 25.5.0 |
| CPU | Apple M1 Pro (10 cores) |
| Node.js version | v24.12.0 |
| nuxt/cli version | 3.35.2 |
| Package manager | pnpm@10.20.0 |
| Nuxt version | 4.4.6 |
| Nitro version | 2.13.4 |
| Builder | vite@7.3.5 |
| Config | app, compatibilityDate, devtools, experimental, fonts, i18n, image, modules, nitro, runtimeConfig, schemaOrg, seo, shadcn, typescript, vite, vue |
| Modules | @nuxt/image@1.11.0, @nuxt/fonts@0.11.4, @nuxtjs/tailwindcss@7.0.0-beta.1, shadcn-nuxt@2.3.2, @nuxtjs/i18n@10.4.0, @vueuse/nuxt@14.0.0, @nuxtjs/sitemap@7.4.7, @nuxt/content@3.14.0, nuxt-schema-org@5.0.9, nuxt-seo-utils@7.0.18 |
Version
3.14.0
Reproduction
https://github.com/leonceaklin/nuxt-content-integrity-repro
Description
I discovered that the content module occasionally fails rebuilding the D1 database and leaves in a state where it cannot self-recover. Result: Pages show a 404 error.
Additional context
This issue has now happened multiple times on a production marketing website. To recover I used point-in-time recovery by Cloudflare D1.
Logs
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the linked nuxt-content-integrity-repro and reproduce the failed D1 rebuild described in the issue. Then trace the content module’s integrity-check and database-rebuild paths; done means a failed rebuild self-recovers and pages no longer become 404s.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- nuxt, typescript
- Domain
- backend, databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100