{"record":{"id":"506b27f1a07f6c08","repo":"gastownhall/beads","slug":"errfscktimeout","errorCode":"ErrFSCKTimeout","errorMessage":"pre-push integrity check timed out","messagePattern":"pre-push integrity check timed out","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"internal/storage/dolt/errors.go","lineNumber":45,"sourceCode":"\t// ErrScan indicates a failure scanning database rows into Go values.\n\tErrScan = errors.New(\"scan error\")\n\n\t// ErrExec indicates a database exec (INSERT/UPDATE/DELETE) failure.\n\tErrExec = errors.New(\"exec error\")\n\n\t// ErrDanglingReference indicates that the pre-push integrity check detected\n\t// missing chunks in the local Dolt noms store. The push was aborted to\n\t// prevent propagating the corruption to the remote. Run bd dolt verify\n\t// to diagnose and recover.\n\tErrDanglingReference = errors.New(\"dangling chunk reference\")\n\n\t// ErrFSCKTimeout indicates that the pre-push integrity check (dolt fsck) did\n\t// not complete within the configured timeout. The push was aborted without\n\t// verifying chunk integrity — the store is not necessarily corrupt. Large\n\t// stores can be shrunk with `dolt gc` (or `CALL DOLT_GC()` on a running\n\t// sql-server); the timeout can be raised via the BEADS_FSCK_TIMEOUT\n\t// environment variable.\n\tErrFSCKTimeout = errors.New(\"pre-push integrity check timed out\")\n\n\t// ErrCommitIndeterminate is the storage-wide no-replay sentinel. Keep this\n\t// alias for server-Dolt callers while embedded Dolt returns the same value.\n\tErrCommitIndeterminate = storage.ErrCommitIndeterminate\n)\n\n// isTableNotExistError returns true if the error indicates a MySQL/Dolt\n// \"table doesn't exist\" error (error 1146). Used to distinguish legitimate\n// fallthrough (pre-migration databases without wisps table) from real errors\n// (timeouts, connection failures, corrupt data).\nfunc isTableNotExistError(err error) bool {\n\treturn dberrors.IsTableNotExist(err)\n}\n\n// isBranchTrackingError returns true if the error indicates that DOLT_PULL\n// failed because upstream branch tracking is not configured. This happens\n// when a remote was added via DOLT_REMOTE('add') or bd dolt remote add\n// rather than via dolt clone / bd bootstrap, leaving repo_state.json with","sourceCodeStart":27,"sourceCodeEnd":63,"githubUrl":"https://github.com/gastownhall/beads/blob/71377f276968b452ee607177637970a4ff888584/internal/storage/dolt/errors.go#L27-L63","documentation":"ErrFSCKTimeout indicates the pre-push integrity check (dolt fsck) did not finish within the configured timeout, so the push was aborted without verifying chunk integrity. The store is not necessarily corrupt — the check just ran out of time. Large stores can be shrunk with `dolt gc` (or `CALL DOLT_GC()` on a running sql-server), and the timeout raised via BEADS_FSCK_TIMEOUT.","triggerScenarios":"Pushing from a large or long-lived repository where dolt fsck exceeds BEADS_FSCK_TIMEOUT (default) before completing.","commonSituations":"Very large .beads history on an old project; slow disk (network storage); CI runner with tight default timeouts; store bloated after many unpruned GC cycles.","solutions":["Raise the timeout: export BEADS_FSCK_TIMEOUT=<longer duration> and retry the push.","Shrink the store with `dolt gc` (or `CALL DOLT_GC()` on a running sql-server), then push again.","Run `bd dolt verify` separately to confirm integrity once the check can complete.","Move the store to faster local storage if on network disk."],"exampleFix":"// before\nbd push  # aborts: pre-push integrity check timed out\n// after\nexport BEADS_FSCK_TIMEOUT=30m\ndolt gc   # or: CALL DOLT_GC(); on sql-server\nbd push","handlingStrategy":"retry","validationCode":"// raise budget before pushing a large store\nos.Setenv(\"BEADS_FSCK_TIMEOUT\", \"30m\")","typeGuard":null,"tryCatchPattern":"if errors.Is(err, dolt.ErrFSCKTimeout) {\n    // retry with a larger BEADS_FSCK_TIMEOUT after dolt gc\n}","preventionTips":["Set BEADS_FSCK_TIMEOUT proportionally to store size","Schedule `dolt gc` to keep the store small","Pre-verify with bd dolt verify before pushes in CI","Avoid network-attached slow disks for .beads storage"],"tags":["dolt","timeout","fsck","push","configuration"],"backgroundTag":"fsck-timeout","analyzedSha":"71377f276968b452ee607177637970a4ff888584","analyzedAt":"2026-08-30T18:55:39.744Z","schemaVersion":2},"datasetVersion":"2026-08-30T23:17:21.991Z"}