weaviate/weaviate · error

no bucket named 'objects' found in store %s

Error message

no bucket named 'objects' found in store %s

What it means

Store.PauseObjectBucketCompaction looks up the 'objects' bucket without re-acquiring the read lock (bucketNoLock, to avoid deadlock against queued writers) and returns this error when that bucket is not loaded in the store. It is a guard so callers don't call pauseCompaction on a nil bucket.

Source

Thrown at adapters/repos/db/lsmkv/store_reindex.go:31

import (
	"context"
	"fmt"

	"github.com/weaviate/weaviate/adapters/repos/db/helpers"
)

// PauseObjectBucketCompaction pauses the compaction cycle for the objects bucket.
// This is so that the BMW migration can run without interference from the
// compaction process, as they both use the same locks.
func (s *Store) PauseObjectBucketCompaction(ctx context.Context) error {
	s.bucketAccessLock.RLock()
	defer s.bucketAccessLock.RUnlock()

	// Bucket() would recursively RLock and deadlock against a queued writer (weaviate/0-weaviate-issues#251).
	b := s.bucketNoLock(helpers.ObjectsBucketLSM)
	if b == nil {
		return fmt.Errorf("no bucket named 'objects' found in store %s", s.dir)
	}

	return b.pauseCompaction(ctx)
}

// ResumeObjectBucketCompaction resumes the compaction cycle for the objects bucket.
func (s *Store) ResumeObjectBucketCompaction(ctx context.Context) error {
	s.bucketAccessLock.RLock()
	defer s.bucketAccessLock.RUnlock()

	b := s.bucketNoLock(helpers.ObjectsBucketLSM)
	if b == nil {
		return fmt.Errorf("no bucket named 'objects' found in store %s", s.dir)
	}

	return b.resumeCompaction(ctx)
}

View on GitHub (pinned to 75aa4b6d11)

Solutions

  1. Check that the collection/shard exists and its objects bucket is loaded before pausing compaction.
  2. Treat the error as 'nothing to pause' in orchestration code: skip and continue instead of failing the reindex.
  3. Serialize compaction-pause calls with shard lifecycle (avoid racing shard deletion).
  4. Verify bucket initialization completed at startup (deferred/paused-index scenarios) before issuing pause calls.

Example fix

// before
err := store.PauseObjectBucketCompaction(ctx) // fails if bucket absent
// after
if err := store.PauseObjectBucketCompaction(ctx); err != nil {
    if strings.Contains(err.Error(), "no bucket named 'objects'") {
        return nil // nothing to pause
    }
    return err
}
Defensive patterns

Strategy: validation

Validate before calling

if store.Bucket(helpers.ObjectsBucketLSM) == nil {
    return nil // objects bucket not loaded: nothing to pause
}

Type guard

func objectsBucketLoaded(s *lsmkv.Store) bool { return s.Bucket(helpers.ObjectsBucketLSM) != nil }

Try / catch

err := store.PauseObjectBucketCompaction(ctx)
if err != nil {
    if strings.Contains(err.Error(), "no bucket named 'objects'") {
        return nil // benign: bucket absent
    }
    return fmt.Errorf("pause objects compaction: %w", err)
}

Prevention

When it happens

Trigger: Calling PauseObjectBucketCompaction on a store that has no 'objects' bucket — e.g. the index has no objects bucket (empty/nonexistent shard state), the bucket was dropped, or the store was created but buckets were never initialized.

Common situations: Reindex/compaction orchestration running against a shard that was deleted concurrently; calling pause before the store finished loading buckets; a collection that never materialized an objects bucket (e.g. before first write); multi-tenant shards being removed during a reindex.

Related errors


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