weaviate/weaviate · error

objects bucket not available (store shutting down)

Error message

objects bucket not available (store shutting down)

What it means

During objectVectorSearch, the aggregator fetches the 'objects' LSM bucket from the store to materialize full objects for the doc IDs found by the vector search. After Store.Shutdown clears the bucket map, Bucket() returns nil; the code detects this and fails fast with a clear message instead of nil-pointer panicking.

Source

Thrown at adapters/repos/db/aggregator/vector_search.go:81

	if err != nil {
		return nil, nil, fmt.Errorf("aggregate search by vector: %w", err)
	}

	return idsFound, dists, nil
}

func (a *Aggregator) objectVectorSearch(ctx context.Context, searchVector models.Vector,
	allowList helpers.AllowList,
) ([]*storobj.Object, []float32, error) {
	ids, dists, err := a.vectorSearch(ctx, allowList, searchVector)
	if err != nil {
		return nil, nil, err
	}

	// Nil once Store.Shutdown has cleared the bucket map; fail fast.
	bucket := a.store.Bucket(helpers.ObjectsBucketLSM)
	if bucket == nil {
		return nil, nil, fmt.Errorf("objects bucket not available (store shutting down)")
	}
	objs, err := storobj.ObjectsByDocID(bucket, ids, additional.Properties{}, nil, a.logger)
	if err != nil {
		return nil, nil, fmt.Errorf("get objects by doc id: %w", err)
	}
	return objs, dists, nil
}

func (a *Aggregator) buildAllowList(ctx context.Context) (helpers.AllowList, error) {
	var (
		allow helpers.AllowList
		err   error
	)

	if a.params.Filters != nil {
		allow, err = inverted.NewSearcher(a.logger, a.store, a.getSchema.ReadOnlyClass, a.propIndices,
			a.classSearcher, a.stopwordProvider, a.shardVersion, a.isFallbackToSearchable,
			a.isRangeableLocallyReady, a.tenant, a.nestedCrossRefLimit, a.bitmapFactory).

View on GitHub (pinned to 75aa4b6d11)

Solutions

  1. Treat as transient: retry the query against another node once the shutdown completes or drain traffic before stopping the node.
  2. Stop routing requests to the node before triggering shutdown (drain first, then stop).
  3. If seen at steady state (not during shutdown), check for a bug where the store was closed prematurely and inspect logs for Store.Shutdown callers.
Defensive patterns

Strategy: retry

Try / catch

if strings.Contains(err.Error(), "store shutting down") {
  // transient: fail over to another node / retry after readiness probe recovers
}

Prevention

When it happens

Trigger: An in-flight aggregation (or gRPC/REST search) that reaches objectVectorSearch while the store is shutting down — e.g. server stopping, SIGTERM handling, or a shard being closed concurrently with a query.

Common situations: Queries issued during rolling restarts or deployments; health checks sending traffic before shutdown completes; load balancers not yet draining the node.

Related errors


AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04). Data as JSON: /api/errors/9c9edf42967f11f3. Report an issue: GitHub.