{"record":{"id":"8198474952d278b1","repo":"weaviate/weaviate","slug":"create-payload-for-class-q-w","errorCode":null,"errorMessage":"create payload for class %q: %w","messagePattern":"create payload for class %q: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"adapters/repos/schema/store.go","lineNumber":410,"sourceCode":"\treturn func(tx *bolt.Tx) error {\n\t\trootCursor := root.Cursor()\n\t\tfor cls, _ := rootCursor.First(); cls != nil; {\n\t\t\tif cls[0] == eTypeClass {\n\t\t\t\terr := root.DeleteBucket(cls)\n\t\t\t\tif err != nil && !errors.Is(err, bolterrors.ErrBucketNotFound) {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t\tcls, _ = rootCursor.Next()\n\t\t}\n\t\tfor _, cls := range ss.ObjectSchema.Classes {\n\t\t\tif err := ctx.Err(); err != nil {\n\t\t\t\treturn fmt.Errorf(\"context for class %q: %w\", cls.Class, err)\n\t\t\t}\n\t\t\tsharding := ss.ShardingState[cls.Class]\n\t\t\tpayload, err := createClassPayload(cls, sharding)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"create payload for class %q: %w\", cls.Class, err)\n\t\t\t}\n\t\t\tb, err := root.CreateBucket(encodeClassName(cls.Class))\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"create bucket for class %q: %w\", cls.Class, err)\n\t\t\t}\n\t\t\tif err := r.updateClass(b, payload); err != nil {\n\t\t\t\treturn fmt.Errorf(\"update bucket %q: %w\", cls.Class, err)\n\t\t\t}\n\t\t\tr.log.WithField(\"action\", \"update_schema_store\").\n\t\t\t\tDebugf(\"Class updated: %s\", cls.Class)\n\t\t}\n\n\t\tr.log.WithField(\"action\", \"update_schema_store\").\n\t\t\tDebug(\"All classes updated\")\n\n\t\treturn nil\n\t}\n}","sourceCodeStart":392,"sourceCodeEnd":428,"githubUrl":"https://github.com/weaviate/weaviate/blob/75aa4b6d11f8818305aafd4440b4e32794f7ca04/adapters/repos/schema/store.go#L392-L428","documentation":"Inside Save's class loop, createClassPayload(cls, sharding) serializes the class definition (and its sharding state) into the per-class payload to be written to BoltDB. An error here means marshaling failed or the sharding state for the class is incompatible/missing in the shape expected by createClassPayload.","triggerScenarios":"createClassPayload returns an error during Save — e.g. JSON marshaling of a malformed class, or sharding == nil for a class present in ObjectSchema but absent from ss.ShardingState.","commonSituations":"Schema states assembled programmatically (tools/tests) where ShardingState wasn't populated for every class; version-skew during rolling upgrades where sharding state format changed.","solutions":["Verify every class in ObjectSchema.Classes has a matching entry in ShardingState; add the missing sharding state.","Inspect the wrapped createClassPayload error for marshal failures and fix the offending class definition.","If caused by version skew, complete the rolling upgrade so all nodes agree on the sharding state format."],"exampleFix":"// before\nss.ObjectSchema.Classes = classes // some classes lack sharding entries\nss.ShardingState = partialSharding\n// after\nfor _, cls := range classes {\n\tif _, ok := ss.ShardingState[cls.Class]; !ok {\n\t\tss.ShardingState[cls.Class] = defaultShardingFor(cls)\n\t}\n}","handlingStrategy":"validation","validationCode":"// ensure every class has a sharding state before Save\nfor _, cls := range ss.ObjectSchema.Classes {\n\tif _, ok := ss.ShardingState[cls.Class]; !ok {\n\t\treturn fmt.Errorf(\"class %q missing sharding state\", cls.Class)\n\t}\n}","typeGuard":null,"tryCatchPattern":"err := store.Save(ctx, ss)\nif err != nil {\n\tvar clsName string\n\tif strings.Contains(err.Error(), \"create payload for class\") {\n\t\tfmt.Sscanf(err.Error(), \"create payload for class %q\", &clsName)\n\t\t// inspect/repair sharding state for clsName\n\t}\n\treturn err\n}","preventionTips":["Keep ObjectSchema.Classes and ShardingState in lockstep through every mutation.","Test schema round-trips (marshal/unmarshal) after upgrade to catch format drift.","Log class + sharding presence mismatch at construction time."],"tags":["schema","serialization","persistence"],"backgroundTag":"class-payload-creation-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"}