weaviate/weaviate · error

property name %s: %w

Error message

property name %s: %w

What it means

Wrapped not-found error in DeleteClassPropertyIndex: the given property name does not match any property of the class (name lookup over class.Properties fails, case-insensitively after normalization). Wraps the underlying cause so callers can match on ErrNotFound.

Source

Thrown at usecases/schema/property.go:180

	// take the address of the local copy. *models.Property has nested
	// pointer fields (IndexFilterable, IndexSearchable, etc.) — those
	// inner pointers are SHARED with the FSM, but the index-flag
	// mutations below replace the pointer outright
	// (`prop.IndexFilterable = &notExists`) instead of writing
	// through the existing one, so the FSM's pointer values stay
	// untouched. Same pattern applyPerPropertySchemaUpdate
	// (adapters/repos/db/inverted_reindex_strategy.go) uses for the
	// reindex strategies' schema flips.
	var prop *models.Property
	for i := range class.Properties {
		if class.Properties[i].Name == propertyName {
			propCopy := *class.Properties[i]
			prop = &propCopy
			break
		}
	}
	if prop == nil {
		return fmt.Errorf("property name %s: %w", propertyName, ErrNotFound)
	}

	// We track the *single* field being mutated so we can pass a
	// field mask to UpdateProperty below. Without the mask, the RAFT
	// FSM falls back to "replace every field" semantics
	// (MergePropsMasked with no mask), which means a read-modify-write
	// off a follower whose local FSM lags one RAFT entry behind the
	// leader will clobber the leader's value of OTHER index flags on
	// commit.
	//
	// Concrete failure shape (reproduces in
	// test/acceptance/alter_schema/delete_property_index_empty_test.go
	// on a 3-node cluster):
	//
	//   t=0  delete title.filterable on node A
	//        → RAFT replicates, all FSMs converge IndexFilterable=false
	//   t=1  delete title.searchable hits node B before B applies t=0
	//        → propCopy reads IndexFilterable=true off B's stale FSM

View on GitHub (pinned to 75aa4b6d11)

Solutions

  1. Verify the property exists on the collection via the schema endpoint
  2. Remember property names are lowercased on creation; use the stored (lowercase) name
  3. Check for typos or wrong collection
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at usecases/schema/property.go:180 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/1a6a9a5901a483c0. Report an issue: GitHub.