JuliusBrussee/caveman · error
ccr typed object currentness rows: %w
Error message
ccr typed object currentness rows: %w
What it means
Wraps the RowsAffected read after the currentness UPDATE in SetObjectCurrentness. The update executed but its effect count could not be determined, so the caller cannot know whether the object was found; the operation fails rather than guessing.
Source
Thrown at engine/ccr/store_sqlite.go:594
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
}
return nil
}
func (s *Store) SetObjectLifecycle(id string, lifecycle Lifecycle) error {
if err := validateLifecycle(lifecycle); err != nil {
return err
}
result, err := s.db.Exec(`UPDATE typed_objects SET lifecycle = ? WHERE object_id = ?`, lifecycle, id)
if err != nil {
return fmt.Errorf("ccr typed object lifecycle: %w", err)
}
n, err := result.RowsAffected()
if err != nil {
return fmt.Errorf("ccr typed object lifecycle rows: %w", err)View on GitHub (pinned to 766dce6b13)
Solutions
- Check the wrapped driver error
- Retry the idempotent update
- Verify the sqlite driver reports RowsAffected correctly for UPDATE
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at engine/ccr/store_sqlite.go:594 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/5e33483f22d4ac1a.
Report an issue: GitHub.