{"record":{"id":"929e719e94b7e2de","repo":"t8y2/dbx","slug":"unsupported-value-encoding-s-929e71","errorCode":null,"errorMessage":"Unsupported value encoding: %s","messagePattern":"Unsupported value encoding: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"agents/drivers/zookeeper/operations.go","lineNumber":463,"sourceCode":"func putResult(stat *zk.Stat) map[string]any {\n\treturn map[string]any{\"version\": stat.Version, \"mtime\": stat.Mtime}\n}\n\nfunc encodeValue(data []byte) valueObject {\n\tif utf8.Valid(data) {\n\t\treturn valueObject{Encoding: \"utf8\", Data: string(data)}\n\t}\n\treturn valueObject{Encoding: \"base64\", Data: base64.StdEncoding.EncodeToString(data)}\n}\n\nfunc decodeValue(value valueObject) ([]byte, error) {\n\tswitch value.Encoding {\n\tcase \"\", \"utf8\":\n\t\treturn []byte(value.Data), nil\n\tcase \"base64\":\n\t\treturn base64.StdEncoding.DecodeString(value.Data)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"Unsupported value encoding: %s\", value.Encoding)\n\t}\n}\n\nfunc encodeCursor(cursor listCursor) (string, error) {\n\tpayload, err := json.Marshal(cursor)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn base64.StdEncoding.EncodeToString(payload), nil\n}\n\nfunc decodeCursor(value string) (listCursor, error) {\n\tpayload, err := base64.StdEncoding.DecodeString(value)\n\tif err != nil {\n\t\treturn listCursor{}, err\n\t}\n\tvar cursor listCursor\n\tif err := json.Unmarshal(payload, &cursor); err != nil {","sourceCodeStart":445,"sourceCodeEnd":481,"githubUrl":"https://github.com/t8y2/dbx/blob/c0390bff16418b651f4728520d99adf8ce48829a/agents/drivers/zookeeper/operations.go#L445-L481","documentation":"decodeValue converts a ZooKeeper node value into raw bytes based on the declared encoding. Only 'utf8' (or empty, meaning plain bytes) and 'base64' are supported; any other Encoding string is rejected with this error. It is a configuration/data validation error, not a network failure.","triggerScenarios":"Calling put (which writes via decodeValue) or the path-value cursor path used by TestPathValueCursorAndCreateModes with a value whose Encoding field is set to something other than \"\", \"utf8\", or \"base64\" (e.g. \"UTF-8\", \"hex\", \"binary\").","commonSituations":"Typos or casing mistakes in config files (\"UTF8\", \"Base64\"), copying configs from tools that support extra encodings like hex, or generated payloads where the encoding field was populated programmatically with an unsupported name.","solutions":["Set the value's Encoding field to \"base64\" if the Data is base64-encoded.","Set Encoding to \"utf8\" (or leave it empty) if Data holds plain bytes.","Lowercase and normalize the encoding string in your config (\"utf8\", \"base64\" are matched exactly, case-sensitively).","Pre-encode binary data yourself with base64.StdEncoding and mark it as \"base64\" instead of inventing an encoding."],"exampleFix":"// before\nv := Value{Data: \"aGVsbG8=\", Encoding: \"Base64\"}\n// after\nv := Value{Data: \"aGVsbG8=\", Encoding: \"base64\"}","handlingStrategy":"validation","validationCode":"func validEncoding(e string) bool {\n\tswitch e {\n\tcase \"\", \"utf8\", \"base64\":\n\t\treturn true\n\t}\n\treturn false\n}\nif !validEncoding(v.Encoding) { return fmt.Errorf(\"unsupported encoding %q\", v.Encoding) }","typeGuard":null,"tryCatchPattern":"data, err := decodeValue(value)\nif err != nil {\n\treturn fmt.Errorf(\"decode node value: %w\", err)\n}","preventionTips":["Restrict Encoding values to a small typed enum or constants in your codebase.","Normalize/lowercase encoding strings when loading config.","Add a unit test covering every encoding string your configs can produce."],"tags":["encoding","validation","zookeeper","config"],"backgroundTag":"unsupported-value-encoding","analyzedSha":"c0390bff16418b651f4728520d99adf8ce48829a","analyzedAt":"2026-09-05T23:05:10.900Z","contentChangedAt":"2026-09-05T23:05:10.900Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}