{"id":"bca4a7ed4d5f6956","repo":"go-redis/redis","slug":"redis-function-stats-unexpected-key-s","errorCode":null,"errorMessage":"redis: function stats unexpected key %s","messagePattern":"redis: function stats unexpected key (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"command.go","lineNumber":6964,"sourceCode":"\t}\n\n\tvar key string\n\tvar result FunctionStats\n\tfor f := 0; f < n; f++ {\n\t\tkey, err = rd.ReadString()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tswitch key {\n\t\tcase \"running_script\":\n\t\t\tresult.rs, result.isRunning, err = cmd.readRunningScript(rd)\n\t\tcase \"engines\":\n\t\t\tresult.Engines, err = cmd.readEngines(rd)\n\t\tcase \"all_running_scripts\": // Redis Enterprise only\n\t\t\tresult.allrs, result.isRunning, err = cmd.readRunningScripts(rd)\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"redis: function stats unexpected key %s\", key)\n\t\t}\n\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tcmd.val = result\n\treturn nil\n}\n\nfunc (cmd *FunctionStatsCmd) readRunningScript(rd *proto.Reader) (RunningScript, bool, error) {\n\terr := rd.ReadFixedMapLen(3)\n\tif err != nil {\n\t\tif err == Nil {\n\t\t\treturn RunningScript{}, false, nil\n\t\t}\n\t\treturn RunningScript{}, false, err","sourceCodeStart":6946,"sourceCodeEnd":6982,"githubUrl":"https://github.com/go-redis/redis/blob/36d97525cd8076aed67cddf54778e9ea84550929/command.go#L6946-L6982","documentation":"Thrown by FunctionStatsCmd.readReply (command.go:6964) while parsing FUNCTION STATS. The top-level map accepts running_script/engines/all_running_scripts (Redis Enterprise); any other top-level key aborts parsing.","triggerScenarios":"client.FunctionStats(ctx) against a Redis that returns a new top-level FUNCTION STATS field the linked go-redis does not recognize (forward-compat drift), or a non-conformant fork.","commonSituations":"Newer Redis version extending FUNCTION STATS; Redis Enterprise with extra fields beyond all_running_scripts; older go-redis against a newer server.","solutions":["Upgrade go-redis to a release that recognizes the new key.","Pin Redis to a version compatible with your go-redis.","Confirm the unknown key with redis-cli (`FUNCTION STATS`) and report/upgrade."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// redis-cli FUNCTION STATS  -> confirm top-level keys are running_script/engines[/all_running_scripts].","typeGuard":null,"tryCatchPattern":"stats, err := client.FunctionStats(ctx).Result()\nif err != nil {\n    // forward-compat drift; upgrade go-redis; degrade to empty stats\n    stats = redis.FunctionStats{}\n}","preventionTips":["Keep go-redis and Redis versions compatible.","Treat FunctionStats as observability metadata."],"tags":["functions","function-stats","resp-parsing","version-mismatch"],"analyzedSha":"36d97525cd8076aed67cddf54778e9ea84550929","analyzedAt":"2026-08-06T01:08:27.376Z","schemaVersion":2}