Skip to content

log noise: periodic PASSIVE WAL checkpoint reports "checkpoint incomplete ... context deadline exceeded" with all-zero stats during bulk indexing #325

Description

@tiendungdev

Env: gortex v0.61.0, Windows 11 Pro, during a long gortex init bulk index.

Observed

Every other 5-minute tick while the bulk indexer is writing:

2026/07/21 07:56:32 store_sqlite: wal checkpoint incomplete mode=PASSIVE busy=0 wal_frames=0 checkpointed_frames=0 error="context deadline exceeded"
2026/07/21 08:06:31 store_sqlite: wal checkpoint incomplete mode=PASSIVE busy=0 wal_frames=0 checkpointed_frames=0 error="context deadline exceeded"

Analysis (internal/graph/store_sqlite/store.go)

  • walCheckpointInterval = 5 * time.Minute, walPassiveCheckpointTimeout = 1 * time.Second (store.go:522–531).
  • The periodic path is documented as best-effort with a non-blocking gate; the 1s context "only protects an unexpected writer-pool wait or a slow driver call".
  • During a bulk index the writer pool is occupied ~continuously, so the 1s context expires before the PRAGMA ever runs — which is why every stat in the log line is zero (busy=0 wal_frames=0 checkpointed_frames=0): they're the zero-value result struct, not measurements.

So the message reads like a checkpoint that ran and failed ("incomplete"), when it actually never started. Functionally benign (the WAL is checkpointed later), but it's exactly the kind of line a user pastes into a bug report.

Suggestion

  • When the context expires during acquisition (before the PRAGMA), log at debug as wal checkpoint skipped: writer busy (or once per bulk phase), reserving the current warning for a checkpoint that genuinely ran and returned an error / left frames behind.
  • Alternatively suppress the periodic warning entirely while a bulk/import phase is active.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions