JuliusBrussee/caveman · error

ccr typed object get: %w

Error message

ccr typed object get: %w

What it means

Store.GetObject's SELECT of a typed object by ID failed at the database layer (not ErrNoRows). The wrapped error carries the underlying SQLite failure, such as a locked or closed database.

Source

Thrown at engine/ccr/store_sqlite.go:579

	}
	obj.CreatedAt = parsed
	if err := json.Unmarshal([]byte(deps), &obj.Dependencies); err != nil {
		return Object{}, fmt.Errorf("ccr typed object dependencies decode: %w", err)
	}
	return obj, nil
}

const objectColumns = `object_id, object_type, content_hash, source, created_at,
 repository_state, session_id, transform_version, currentness, lifecycle,
 dependencies_json, original_byte_length, stored_byte_length, data`

func (s *Store) GetObject(id string) (Object, error) {
	obj, err := scanObject(s.db.QueryRow(`SELECT `+objectColumns+` FROM typed_objects WHERE object_id = ?`, id))
	if errors.Is(err, sql.ErrNoRows) {
		return Object{}, ErrNotFound
	}
	if err != nil {
		return Object{}, fmt.Errorf("ccr typed object get: %w", err)
	}
	return obj, nil
}

func (s *Store) SetObjectCurrentness(id string, currentness Currentness) error {
	if err := validateCurrentness(currentness); err != nil {
		return err
	}
	result, err := s.db.Exec(`UPDATE typed_objects SET currentness = ? WHERE object_id = ?`, currentness, id)
	if err != nil {
		return fmt.Errorf("ccr typed object currentness: %w", err)
	}
	n, err := result.RowsAffected()
	if err != nil {
		return fmt.Errorf("ccr typed object currentness rows: %w", err)
	}
	if n == 0 {
		return ErrNotFound

View on GitHub (pinned to 766dce6b13)

Solutions

  1. Check the wrapped error for the underlying cause
  2. Retry after transient locks clear
  3. Recreate the store if the table is corrupt
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at engine/ccr/store_sqlite.go:579 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/254b3790885794d8. Report an issue: GitHub.