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 = ¬Exists`) 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 FSMView on GitHub (pinned to 75aa4b6d11)
Solutions
- Verify the property exists on the collection via the schema endpoint
- Remember property names are lowercased on creation; use the stored (lowercase) name
- 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.