JuliusBrussee/caveman · error

ccr summary rows: %w

Error message

ccr summary rows: %w

What it means

rows.Err() after iterating the recoveries GROUP BY query in Store.Summary returned an error, meaning iteration was interrupted mid-scan. Aggregation aborts rather than returning partial totals.

Source

Thrown at engine/ccr/store_sqlite.go:687

		 FROM recoveries GROUP BY content_type`)
	if err != nil {
		return out, fmt.Errorf("ccr summary: %w", err)
	}
	defer rows.Close()
	for rows.Next() {
		var ct string
		var b Bucket
		if err := rows.Scan(&ct, &b.Count, &b.TokensBefore, &b.TokensAfter); err != nil {
			return out, fmt.Errorf("ccr summary scan: %w", err)
		}
		b.Ratio = ratio(b.TokensBefore, b.TokensAfter)
		out.ByContentType[ct] = b
		out.Totals.Count += b.Count
		out.Totals.TokensBefore += b.TokensBefore
		out.Totals.TokensAfter += b.TokensAfter
	}
	if err := rows.Err(); err != nil {
		return out, fmt.Errorf("ccr summary rows: %w", err)
	}
	if err := rows.Close(); err != nil {
		return out, fmt.Errorf("ccr summary close: %w", err)
	}
	out.Totals.Ratio = ratio(out.Totals.TokensBefore, out.Totals.TokensAfter)
	used, err := s.storageBytes()
	if err != nil {
		return out, fmt.Errorf("ccr summary storage: %w", err)
	}
	out.StorageBytes = used
	out.MaxStorageBytes = s.maxBytes
	out.StorageFull = used >= s.maxBytes
	return out, nil
}

View on GitHub (pinned to 766dce6b13)

Solutions

  1. Check the wrapped error for I/O or lock causes
  2. Retry the summary computation
  3. Verify database health if the failure repeats
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at engine/ccr/store_sqlite.go:687 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of JuliusBrussee/caveman@766dce6b13 (2026-08-18). Data as JSON: /api/errors/b9a1a1c569911b99. Report an issue: GitHub.