JuliusBrussee/caveman · error

ccr put: %w

Error message

ccr put: %w

What it means

Error "ccr put: %w" thrown in JuliusBrussee/caveman.

Source

Thrown at engine/ccr/store_sqlite.go:358

	}
	_, err = db.Exec(`ALTER TABLE recoveries ADD COLUMN metadata BLOB`)
	return err
}

// OpenMemory opens an ephemeral in-memory store.
func OpenMemory() (*Store, error) { return OpenWithBudget(":memory:", DefaultMaxStorageBytes) }

// Close closes the underlying database.
func (s *Store) Close() error { return s.db.Close() }

// Put stores a recovery and returns its handle. It is idempotent: storing the
// same original twice (the handle is derived from the bytes) overwrites the row
// with identical content and returns the same handle.
func (s *Store) Put(rec Recovery) (string, error) {
	handle := Handle(rec.Original)
	unchanged, err := s.recoveryUnchanged(handle, rec)
	if err != nil {
		return "", fmt.Errorf("ccr put: %w", err)
	}
	if unchanged {
		return handle, nil
	}
	if err := s.checkRecoveryBudget(handle, int64(len(rec.Original)+len(rec.Metadata))); err != nil {
		return "", fmt.Errorf("ccr put: %w", err)
	}
	_, err = s.db.Exec(
		`INSERT INTO recoveries (handle, created_at, content_type, compressor, tokens_before, tokens_after, original, metadata)
		 VALUES (?,?,?,?,?,?,?,?)
		 ON CONFLICT(handle) DO UPDATE SET
		   created_at=excluded.created_at,
		   content_type=CASE WHEN excluded.tokens_before = 0 AND recoveries.tokens_before > 0 THEN recoveries.content_type ELSE excluded.content_type END,
		   compressor=CASE WHEN excluded.tokens_before = 0 AND recoveries.tokens_before > 0 THEN recoveries.compressor ELSE excluded.compressor END,
		   tokens_before=CASE WHEN excluded.tokens_before = 0 AND recoveries.tokens_before > 0 THEN recoveries.tokens_before ELSE excluded.tokens_before END,
		   tokens_after=CASE WHEN excluded.tokens_before = 0 AND recoveries.tokens_before > 0 THEN recoveries.tokens_after ELSE excluded.tokens_after END,
		   original=excluded.original,
		   metadata=CASE

View on GitHub (pinned to 27d5a3981a)

Solutions

  1. Fix the underlying ccr put error and retry.

When it happens

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

Common situations: See trigger scenarios.


AI-assisted analysis of JuliusBrussee/caveman@27d5a3981a (2026-08-15). Data as JSON: /api/errors/2ba8567118f195e8. Report an issue: GitHub.