canopy-network/canopy · error · ErrStoreGet
failed to create iterator: %v
Error message
failed to create iterator: %v
What it means
Raised in newVersionedIterator when neither the batch nor the underlying pebble DB can create an iterator (iter is nil or err is non-nil) for the given prefix and filter options. It signals an infrastructure failure opening a range scan, not an empty result set, and is wrapped with ErrStoreGet.
Source
Thrown at store/versioned_store.go:290
}
var (
err error
iter *pebble.Iterator
opts = &pebble.IterOptions{
LowerBound: prefix,
UpperBound: prefixEnd(prefix),
KeyTypes: pebble.IterKeyTypePointsOnly,
PointKeyFilters: filters,
UseL6Filters: false,
}
)
if vs.batch != nil && vs.batch.Indexed() {
iter, err = vs.batch.NewIter(opts)
} else {
iter, err = vs.db.NewIter(opts)
}
if iter == nil || err != nil {
return nil, ErrStoreGet(fmt.Errorf("failed to create iterator: %v", err))
}
return &VersionedIterator{
iter: iter,
store: vs,
prefix: prefix,
reverse: reverse,
seek: seek,
}, nil
}
// VersionedIterator implements iteration with single-pass key deduplication
type VersionedIterator struct {
iter *pebble.Iterator
store *VersionedStore
prefix []byte
key []byte
value []byte
reverse boolView on GitHub (pinned to ee8197d91d)
Solutions
- Inspect the embedded pebble error for the root cause (DB closed, invalid bounds/options).
- Verify prefix bounds (LowerBound/UpperBound) are well-formed and lower < upper.
- Retry the iteration; if it persists, check the pebble DB health and whether the batch was invalidated.
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at store/versioned_store.go:290 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of canopy-network/canopy@ee8197d91d (2026-09-06).
Data as JSON: /api/errors/f071709158eb5170.
Report an issue: GitHub.