{"id":"ca878fd16dd11d45","repo":"go-redis/redis","slug":"invalid-item-key-format","errorCode":null,"errorMessage":"invalid item key format","messagePattern":"invalid item key format","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"search_commands.go","lineNumber":3106,"sourceCode":"\t\t\t\t\titemMap[keyStr] = v\n\t\t\t\t}\n\t\t\t}\n\t\t\tresults = append(results, itemMap)\n\t\t\tcontinue\n\t\t}\n\n\t\t// Fall back to array format (RESP2 format - key-value pairs)\n\t\titemData, ok := item.([]interface{})\n\t\tif !ok {\n\t\t\treturn FTHybridResult{}, nil, fmt.Errorf(\"invalid result item format\")\n\t\t}\n\n\t\titemMap := make(map[string]interface{})\n\t\tfor i := 0; i < len(itemData); i += 2 {\n\t\t\tif i+1 < len(itemData) {\n\t\t\t\tkey, ok := itemData[i].(string)\n\t\t\t\tif !ok {\n\t\t\t\t\treturn FTHybridResult{}, nil, fmt.Errorf(\"invalid item key format\")\n\t\t\t\t}\n\t\t\t\titemMap[key] = itemData[i+1]\n\t\t\t}\n\t\t}\n\t\tresults = append(results, itemMap)\n\t}\n\n\t// Optional warnings; accept both \"warning\" (as FT.SEARCH/FT.AGGREGATE) and \"warnings\".\n\tvar warnings []string\n\twarningsData, ok := resultMap[\"warning\"].([]interface{})\n\tif !ok {\n\t\twarningsData, ok = resultMap[\"warnings\"].([]interface{})\n\t}\n\tif ok {\n\t\twarnings = make([]string, 0, len(warningsData))\n\t\tfor _, w := range warningsData {\n\t\t\tif ws, ok := w.(string); ok {\n\t\t\t\twarnings = append(warnings, ws)","sourceCodeStart":3088,"sourceCodeEnd":3124,"githubUrl":"https://github.com/go-redis/redis/blob/36d97525cd8076aed67cddf54778e9ea84550929/search_commands.go#L3088-L3124","documentation":"Raised in the RESP2-style fallback path of parseFTHybrid (search_commands.go:3102-3107): when a result item is parsed as a flat key/value array, even-index elements must be string keys.","triggerScenarios":"A result item parsed as an array contains a non-string at an even index, indicating the pairs stream is corrupt or misaligned.","commonSituations":"Server-side variant emitting non-string keys, or reply corruption over an unstable connection.","solutions":["Inspect RawResult() to find the failing pair index.","Upgrade server module and go-redis.","Reproduce via redis-cli.","File an issue with the raw payload."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"res, _, err := client.FTHybridWithArgs(ctx, idx, opts).Result()\nif err != nil && strings.Contains(err.Error(), \"invalid item key format\") {\n    raw, _ := cmd.RawVal()\n    log.Printf(\"fthybrid item key not string; raw=%#v\", raw)\n}","preventionTips":["Upgrade server module and go-redis together.","Capture RawVal() to locate the failing pair.","Reproduce via redis-cli."],"tags":["redisearch","ft-hybrid","resp2","response-parsing"],"analyzedSha":"36d97525cd8076aed67cddf54778e9ea84550929","analyzedAt":"2026-08-06T01:08:27.376Z","schemaVersion":2}