gastownhall/beads · error
GetStatistics: %w
Error message
GetStatistics: %w
What it means
Pass-through wrapper from GetStatistics in the issue use-case: wraps errors from issueRepo.GetStatistics, which aggregates issue counts by status/priority across the whole database. Any failure computing these aggregates in storage surfaces as 'GetStatistics: <root cause>'.
Source
Thrown at internal/storage/domain/issue.go:1825
return ClaimReadyResult{}, fmt.Errorf("ClaimReadyWisp: %w", err)
}
return ClaimReadyResult{}, fmt.Errorf("ClaimReadyIssue: %w", err)
}
return ClaimReadyResult{Issue: issue, Claimed: issue != nil}, nil
}
func (u *issueUseCaseImpl) GetBlockedIssues(ctx context.Context, filter types.WorkFilter) ([]*types.BlockedIssue, error) {
out, err := u.issueRepo.GetBlockedIssues(ctx, filter)
if err != nil {
return nil, fmt.Errorf("GetBlockedIssues: %w", err)
}
return out, nil
}
func (u *issueUseCaseImpl) GetStatistics(ctx context.Context) (*types.Statistics, error) {
out, err := u.issueRepo.GetStatistics(ctx)
if err != nil {
return nil, fmt.Errorf("GetStatistics: %w", err)
}
return out, nil
}
func (u *issueUseCaseImpl) CountIssues(ctx context.Context, query string, filter types.IssueFilter) (int64, error) {
out, err := u.issueRepo.CountIssues(ctx, query, filter)
if err != nil {
return 0, fmt.Errorf("CountIssues: %w", err)
}
return out, nil
}
func (u *issueUseCaseImpl) CountIssuesByGroup(ctx context.Context, filter types.IssueFilter, groupBy string) (map[string]int, error) {
out, err := u.issueRepo.CountIssuesByGroup(ctx, filter, groupBy)
if err != nil {
return nil, fmt.Errorf("CountIssuesByGroup: %w", err)
}
return out, nilView on GitHub (pinned to 71377f2769)
Solutions
- Inspect the wrapped error after 'GetStatistics:' for the root cause
- Retry on transient errors; verify database connectivity
- For timeouts on huge datasets, ensure indexes/compaction are up to date
- Confirm schema is fully migrated after upgrading beads
Defensive patterns
Strategy: try-catch
Try / catch
stats, err := uc.GetStatistics(ctx)
if err != nil {
log.Warnf("statistics unavailable: %v", err)
return nil
} Prevention
- Retry transient errors; statistics is a read-only safe retry
- Verify schema migrations completed after upgrades
- For large databases, ensure maintenance/compaction runs to avoid aggregate timeouts
- Check connectivity before scheduled dashboard refreshes
When it happens
Trigger: Calling GetStatistics(ctx) when the repository's aggregate queries fail — typically database unavailability, timeout on large datasets, or schema mismatch in aggregate views.
Common situations: Dashboard/status commands run against a very large issue database timing out; DB connection dropped; partial migration leaving aggregate queries referencing missing columns.
Related errors
- not found
- load wisp labels: %w
- edge %d %s->%s: checking planned blocking cycle: %w
- reading existing dependencies for %s: %w
- CountOpenChildren %s: %w
AI-assisted analysis of gastownhall/beads@71377f2769 (2026-08-30).
Data as JSON: /api/errors/96d152dc2daccc7c.
Report an issue: GitHub.