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       bool

View on GitHub (pinned to ee8197d91d)

Solutions

  1. Inspect the embedded pebble error for the root cause (DB closed, invalid bounds/options).
  2. Verify prefix bounds (LowerBound/UpperBound) are well-formed and lower < upper.
  3. 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.