weaviate/weaviate · error

change-tokenization requires exactly one property

Error message

change-tokenization requires exactly one property

What it means

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.

Source

Thrown at adapters/repos/db/reindex_recovery.go:250

		}
	case ReindexTypeEnableRangeable, ReindexTypeRepairRangeable:
		raw = []*ShardReindexTaskGeneric{
			NewRuntimeFilterableToRangeableTask(logger, schemaManager, payload.Properties, payload.Collection, generation),
		}
	case ReindexTypeEnableFilterable:
		raw = []*ShardReindexTaskGeneric{
			NewRuntimeEnableFilterableTask(logger, payload.Properties, payload.Collection, generation),
		}
	case ReindexTypeEnableSearchable:
		if payload.TargetTokenization == "" {
			return nil, fmt.Errorf("%s requires targetTokenization", payload.MigrationType)
		}
		raw = []*ShardReindexTaskGeneric{
			NewRuntimeEnableSearchableTask(logger, payload.Properties, payload.Collection, payload.TargetTokenization, generation),
		}
	case ReindexTypeChangeTokenization:
		if len(payload.Properties) != 1 {
			return nil, fmt.Errorf("change-tokenization requires exactly one property")
		}
		if payload.TargetTokenization == "" {
			return nil, fmt.Errorf("change-tokenization requires targetTokenization")
		}
		if payload.BucketStrategy == "" {
			return nil, fmt.Errorf("change-tokenization requires bucketStrategy")
		}
		propName := payload.Properties[0]
		raw = []*ShardReindexTaskGeneric{
			NewRuntimeSearchableRetokenizeTask(
				logger, propName, payload.TargetTokenization,
				payload.Collection, payload.BucketStrategy, payload.Collection,
				generation,
			),
			NewRuntimeFilterableRetokenizeTask(
				logger,
				propName, payload.TargetTokenization,
				payload.Collection, payload.Collection,

View on GitHub (pinned to 75aa4b6d11)

Solutions

  1. Re-issue the change-tokenization migration scoped to a single property.
  2. Discard the malformed recovery record; shard data is unaffected.
  3. Validate payload cardinality when the record is first persisted.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at adapters/repos/db/reindex_recovery.go:250 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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