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
- Inspect the wrapped cause for the storage-level reason (disk full, permission, corruption).
- Check node disk usage and free space; verify filesystem health.
- Retry the failed object write; batch requests are resumable.
- 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
- Monitor disk usage and set alerts before it fills.
- Enable backups and verify them before enabling rangeable indexing.
- Serialize schema changes with application writes (pause writes during migration).
- Track LSM errors in server metrics/logs.
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
- retokenize add prop '%s' to bucket '%s': %w
- adding prop '%s' to bucket '%s': %w
- store object in LSM store
- failed to put posting %d
- set new posting version for id %d
AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04).
Data as JSON: /api/errors/7bd5ab47342e80af.
Report an issue: GitHub.