{"record":{"id":"5b76b561558be33c","repo":"weaviate/weaviate","slug":"change-tokenization-requires-exactly-one-property-5b76b5","errorCode":null,"errorMessage":"change-tokenization requires exactly one property","messagePattern":"change-tokenization requires exactly one property","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"adapters/repos/db/reindex_recovery.go","lineNumber":250,"sourceCode":"\t\t}\n\tcase ReindexTypeEnableRangeable, ReindexTypeRepairRangeable:\n\t\traw = []*ShardReindexTaskGeneric{\n\t\t\tNewRuntimeFilterableToRangeableTask(logger, schemaManager, payload.Properties, payload.Collection, generation),\n\t\t}\n\tcase ReindexTypeEnableFilterable:\n\t\traw = []*ShardReindexTaskGeneric{\n\t\t\tNewRuntimeEnableFilterableTask(logger, payload.Properties, payload.Collection, generation),\n\t\t}\n\tcase ReindexTypeEnableSearchable:\n\t\tif payload.TargetTokenization == \"\" {\n\t\t\treturn nil, fmt.Errorf(\"%s requires targetTokenization\", payload.MigrationType)\n\t\t}\n\t\traw = []*ShardReindexTaskGeneric{\n\t\t\tNewRuntimeEnableSearchableTask(logger, payload.Properties, payload.Collection, payload.TargetTokenization, generation),\n\t\t}\n\tcase ReindexTypeChangeTokenization:\n\t\tif len(payload.Properties) != 1 {\n\t\t\treturn nil, fmt.Errorf(\"change-tokenization requires exactly one property\")\n\t\t}\n\t\tif payload.TargetTokenization == \"\" {\n\t\t\treturn nil, fmt.Errorf(\"change-tokenization requires targetTokenization\")\n\t\t}\n\t\tif payload.BucketStrategy == \"\" {\n\t\t\treturn nil, fmt.Errorf(\"change-tokenization requires bucketStrategy\")\n\t\t}\n\t\tpropName := payload.Properties[0]\n\t\traw = []*ShardReindexTaskGeneric{\n\t\t\tNewRuntimeSearchableRetokenizeTask(\n\t\t\t\tlogger, propName, payload.TargetTokenization,\n\t\t\t\tpayload.Collection, payload.BucketStrategy, payload.Collection,\n\t\t\t\tgeneration,\n\t\t\t),\n\t\t\tNewRuntimeFilterableRetokenizeTask(\n\t\t\t\tlogger,\n\t\t\t\tpropName, payload.TargetTokenization,\n\t\t\t\tpayload.Collection, payload.Collection,","sourceCodeStart":232,"sourceCodeEnd":268,"githubUrl":"https://github.com/weaviate/weaviate/blob/75aa4b6d11f8818305aafd4440b4e32794f7ca04/adapters/repos/db/reindex_recovery.go#L232-L268","documentation":"Raised while rebuilding recovery tasks for an in-flight reindex discovered after a restart. The persisted migration payload has ReindexTypeChangeTokenization but its Properties list does not contain exactly one entry; retokenization is inherently single-property, so the recorded task is malformed and recovery aborts.","triggerScenarios":"Thrown at adapters/repos/db/reindex_recovery.go:250 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Re-issue the change-tokenization migration scoped to a single property.","Discard the malformed recovery record; shard data is unaffected.","Validate payload cardinality when the record is first persisted."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}