{"record":{"id":"7bd5ab47342e80af","repo":"weaviate/weaviate","slug":"adding-rangeable-prop-s-to-bucket-s-w","errorCode":null,"errorMessage":"adding rangeable prop '%s' to bucket '%s': %w","messagePattern":"adding rangeable prop '(.+?)' to bucket '(.+?)': %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"adapters/repos/db/inverted_reindex_strategy_rangeable.go","lineNumber":121,"sourceCode":"\treturn nil\n}\n\nfunc (s *FilterableToRangeableStrategy) MakeAddCallback(bucketNamer func(string) string,\n\tpropsByName map[string]struct{}, forTargetStrategy bool,\n) onAddToPropertyValueIndex {\n\treturn func(shard *Shard, docID uint64, property *inverted.Property) error {\n\t\t// Don't gate on HasFilterableIndex — the property may be\n\t\t// IndexFilterable=false, and we still need to populate the\n\t\t// rangeable bucket from the live write. Scope is enforced via\n\t\t// propsByName.\n\t\tbucket, bucketName, skip := resolveScopedDoubleWriteBucket(shard, property,\n\t\t\tpropsByName, bucketNamer, s.SourceBucketName, forTargetStrategy)\n\t\tif skip {\n\t\t\treturn nil\n\t\t}\n\t\tfor _, item := range property.Items {\n\t\t\tif err := shard.addToPropertyRangeBucket(bucket, docID, item.Data); err != nil {\n\t\t\t\treturn fmt.Errorf(\"adding rangeable prop '%s' to bucket '%s': %w\", item.Data, bucketName, err)\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t}\n}\n\nfunc (s *FilterableToRangeableStrategy) MakeDeleteCallback(bucketNamer func(string) string,\n\tpropsByName map[string]struct{}, forTargetStrategy bool,\n) onDeleteFromPropertyValueIndex {\n\treturn func(shard *Shard, docID uint64, property *inverted.Property) error {\n\t\t// Don't gate on HasFilterableIndex — see MakeAddCallback.\n\t\tbucket, bucketName, skip := resolveScopedDoubleWriteBucket(shard, property,\n\t\t\tpropsByName, bucketNamer, s.SourceBucketName, forTargetStrategy)\n\t\tif skip {\n\t\t\treturn nil\n\t\t}\n\t\tfor _, item := range property.Items {\n\t\t\tif err := shard.deleteFromPropertyRangeBucket(bucket, docID, item.Data); err != nil {","sourceCodeStart":103,"sourceCodeEnd":139,"githubUrl":"https://github.com/weaviate/weaviate/blob/75aa4b6d11f8818305aafd4440b4e32794f7ca04/adapters/repos/db/inverted_reindex_strategy_rangeable.go#L103-L139","documentation":"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.","triggerScenarios":"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).","commonSituations":"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.","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."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"err := client.Data().Creator().WithClassName(cls).WithProperties(props...).Do(ctx)\nif err != nil {\n    // 500s here may be \"adding rangeable prop ... to bucket\": check disk/LSM state\n    if isServerError(err) { return retryWithBackoff(ctx, func() error { return doWrite(ctx) }) }\n    return err\n}","preventionTips":["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."],"tags":["go","lsmkv","storage","write-path"],"backgroundTag":"lsm-bucket-write-failed","analyzedSha":"75aa4b6d11f8818305aafd4440b4e32794f7ca04","analyzedAt":"2026-09-04T14:58:20.392Z","contentChangedAt":"2026-09-04T14:58:20.392Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}