{"id":"78b3241481d7b763","repo":"go-redis/redis","slug":"cannot-convert-t-to-bool","errorCode":null,"errorMessage":"cannot convert %T to bool","messagePattern":"cannot convert %T to bool","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/routing/aggregator.go","lineNumber":686,"sourceCode":"\t\treturn float64(v), nil\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"cannot convert %T to float64\", val)\n\t}\n}\n\nfunc toBool(val interface{}) (bool, error) {\n\tif val == nil {\n\t\treturn false, nil\n\t}\n\tswitch v := val.(type) {\n\tcase bool:\n\t\treturn v, nil\n\tcase int64:\n\t\treturn v != 0, nil\n\tcase int:\n\t\treturn v != 0, nil\n\tdefault:\n\t\treturn false, fmt.Errorf(\"cannot convert %T to bool\", val)\n\t}\n}\n\n// DefaultKeylessAggregator collects all results in an array, order doesn't matter.\ntype DefaultKeylessAggregator struct {\n\tmu       sync.Mutex\n\tresults  []interface{}\n\tfirstErr error\n}\n\nfunc (a *DefaultKeylessAggregator) add(result interface{}, err error) error {\n\tif err != nil && a.firstErr == nil {\n\t\ta.firstErr = err\n\t\treturn nil\n\t}\n\tif err == nil {\n\t\ta.results = append(a.results, result)\n\t}","sourceCodeStart":668,"sourceCodeEnd":704,"githubUrl":"https://github.com/go-redis/redis/blob/36d97525cd8076aed67cddf54778e9ea84550929/internal/routing/aggregator.go#L668-L704","documentation":"Error \"cannot convert %T to bool\" thrown in go-redis/redis.","triggerScenarios":"Thrown at internal/routing/aggregator.go:686 when the library encounters an invalid state.","commonSituations":"Normalize shard results to bool before logical aggregation.","solutions":["Ensure values are bool/int before boolean aggregation","Convert string results ('0'/'1') explicitly before aggregating"],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"analyzedSha":"36d97525cd8076aed67cddf54778e9ea84550929","analyzedAt":"2026-08-06T01:08:27.376Z","schemaVersion":2}