gastownhall/beads · error
iter dependents: query: %w
Error message
iter dependents: query: %w
What it means
After acquiring a connection, iterIssuesWithDepType runs the dependents query with conn.QueryContext. This error wraps a failure of that query execution — SQL error, missing/corrupt dependency tables, bad query args, or connection failure — and the connection is closed before returning. It happens before any row iteration begins.
Source
Thrown at internal/storage/dolt/iter_dependents.go:99
deps, err := s.GetDependenciesWithMetadata(ctx, issueID)
if err != nil {
return nil, err
}
return storage.NewSliceIter(deps), nil
}
func (s *DoltStore) iterIssuesWithDepType(ctx context.Context, q string, args ...any) (storage.Iter[types.IssueWithDependencyMetadata], error) {
if s.closed.Load() {
return nil, ErrStoreClosed
}
conn, err := s.db.Conn(ctx)
if err != nil {
return nil, fmt.Errorf("iter dependents: acquire conn: %w", err)
}
rows, err := conn.QueryContext(ctx, q, args...)
if err != nil {
_ = conn.Close()
return nil, fmt.Errorf("iter dependents: query: %w", err)
}
return &doltDependentsIter{s: s, conn: conn, rows: rows}, nil
}
func (it *doltDependentsIter) Next(ctx context.Context) bool {
if it.err != nil || it.closed {
return false
}
if err := ctx.Err(); err != nil {
it.err = err
return false
}
if !it.rows.Next() {
it.err = it.rows.Err()
return false
}
iss, depType, err := scanIssueWithDepTypeFrom(it.rows)
if err != nil {View on GitHub (pinned to 71377f2769)
Solutions
- Read the wrapped SQL error; if it names a missing table/column, run the beads schema migration.
- Verify the argument (issue/prefix ID) is well-formed — a type or format mismatch surfaces here.
- Retry with a longer context deadline if the failure is a timeout on a large dependency graph.
- Check Dolt server health and driver/server version compatibility; restart or upgrade as needed.
Example fix
// before
rows, err := conn.QueryContext(ctx, q, args...)
if err != nil {
_ = conn.Close()
return nil, fmt.Errorf("iter dependents: query: %w", err)
}
// after (validate schema prerequisites first)
var n int
if err := s.db.QueryRowContext(ctx, "SELECT COUNT(*) FROM information_schema.tables WHERE table_name = 'dependencies'").Scan(&n); err == nil && n == 0 {
return nil, fmt.Errorf("iter dependents: dependencies table missing; run schema migration")
}
rows, err := conn.QueryContext(ctx, q, args...)
if err != nil {
_ = conn.Close()
return nil, fmt.Errorf("iter dependents: query: %w", err)
} Defensive patterns
Strategy: try-catch
Validate before calling
var n int
if err := db.QueryRow("SELECT COUNT(*) FROM information_schema.tables WHERE table_name = 'dependencies'").Scan(&n); err != nil || n == 0 {
return fmt.Errorf("dependencies table missing; run schema migration")
} Type guard
func isDependentsQueryErr(err error) bool {
return err != nil && strings.Contains(err.Error(), "iter dependents: query")
} Try / catch
it, err := store.IterDependentsWithMetadata(ctx, issueID)
if err != nil {
if isDependentsQueryErr(err) {
log.Printf("dependents query failed (check schema/migration): %v", errors.Unwrap(err))
return fmt.Errorf("retry after schema check: %w", err)
}
return err
}
defer it.Close() Prevention
- Run schema migrations after beads upgrades and database restores
- Pass well-formed issue IDs/prefixes to dependency queries
- Use generous context deadlines for large dependency graphs
- Keep Dolt driver and server versions compatible
When it happens
Trigger: Calling IterDependentsWithMetadata when the underlying dependents SQL (join over issues/dependencies tables) fails: malformed dependency table schema, SQL syntax/type error in the composed query, cancelled context during query start, or the freshly acquired connection failing on first use.
Common situations: Databases restored from old exports missing dependency tables/columns; driver/server version mismatch rejecting SQL features used in the query; context deadlines too short for large dependency graphs.
Related errors
- failed to get federation peer: %w
- failed to list federation peers: %w
- db: ChildCounterSQLRepository.NextChildID: scan existing chi
- db: CommentSQLRepository.CountsByIssueIDs: %w
- db: CommentSQLRepository.ListByIssueIDs: %w
AI-assisted analysis of gastownhall/beads@71377f2769 (2026-08-30).
Data as JSON: /api/errors/6da0bb26384823e1.
Report an issue: GitHub.