weaviate/weaviate · error

adding rangeable prop '%s' to bucket '%s': %w

Error message

adding rangeable prop '%s' to bucket '%s': %w

What it means

Wraps an error from shard.addToPropertyRangeBucket when the add-callback of the FilterableToRangeableStrategy writes new/updated objects into the rangeable property bucket during normal writes. The cause is an LSM bucket write failure for the target range bucket.

Source

Thrown at adapters/repos/db/inverted_reindex_strategy_rangeable.go:121

	return nil
}

func (s *FilterableToRangeableStrategy) MakeAddCallback(bucketNamer func(string) string,
	propsByName map[string]struct{}, forTargetStrategy bool,
) onAddToPropertyValueIndex {
	return func(shard *Shard, docID uint64, property *inverted.Property) error {
		// Don't gate on HasFilterableIndex — the property may be
		// IndexFilterable=false, and we still need to populate the
		// rangeable bucket from the live write. Scope is enforced via
		// propsByName.
		bucket, bucketName, skip := resolveScopedDoubleWriteBucket(shard, property,
			propsByName, bucketNamer, s.SourceBucketName, forTargetStrategy)
		if skip {
			return nil
		}
		for _, item := range property.Items {
			if err := shard.addToPropertyRangeBucket(bucket, docID, item.Data); err != nil {
				return fmt.Errorf("adding rangeable prop '%s' to bucket '%s': %w", item.Data, bucketName, err)
			}
		}
		return nil
	}
}

func (s *FilterableToRangeableStrategy) MakeDeleteCallback(bucketNamer func(string) string,
	propsByName map[string]struct{}, forTargetStrategy bool,
) onDeleteFromPropertyValueIndex {
	return func(shard *Shard, docID uint64, property *inverted.Property) error {
		// Don't gate on HasFilterableIndex — see MakeAddCallback.
		bucket, bucketName, skip := resolveScopedDoubleWriteBucket(shard, property,
			propsByName, bucketNamer, s.SourceBucketName, forTargetStrategy)
		if skip {
			return nil
		}
		for _, item := range property.Items {
			if err := shard.deleteFromPropertyRangeBucket(bucket, docID, item.Data); err != nil {

View on GitHub (pinned to 75aa4b6d11)

Solutions

  1. Inspect the wrapped cause for the storage-level reason (disk full, permission, corruption).
  2. Check node disk usage and free space; verify filesystem health.
  3. Retry the failed object write; batch requests are resumable.
  4. If the bucket state is inconsistent, restore from backup or reindex the property.
Defensive patterns

Strategy: try-catch

Try / catch

err := client.Data().Creator().WithClassName(cls).WithProperties(props...).Do(ctx)
if err != nil {
    // 500s here may be "adding rangeable prop ... to bucket": check disk/LSM state
    if isServerError(err) { return retryWithBackoff(ctx, func() error { return doWrite(ctx) }) }
    return err
}

Prevention

When it happens

Trigger: Adding or updating an object whose schema has rangeable-indexed properties; the callback resolves the bucket and calls addToPropertyRangeBucket, which fails (disk I/O, closed bucket, flush error).

Common situations: Disk full on production nodes; object PUT/batch import failing after a rangeable index was enabled on a property; shard replacement/copy racing with writes.

Related errors


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