{"id":"6464fa9a99ff345e","repo":"redis/redis","slug":"node-s-replied-with-error-s","errorCode":null,"errorMessage":"Node %s replied with error:\n%s\n","messagePattern":"Node (.+?) replied with error:\n(.+?)\n","errorType":"console","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"src/redis-benchmark.c","lineNumber":254,"sourceCode":"    if (config.tls==1) {\n        const char *err = NULL;\n        if (cliSecureConnection(ctx, config.sslconfig, &err) == REDIS_ERR && err) {\n            fprintf(stderr, \"Could not negotiate a TLS connection: %s\\n\", err);\n            goto cleanup;\n        }\n    }\n    if (config.conn_info.auth == NULL)\n        return ctx;\n    if (config.conn_info.user == NULL)\n        reply = redisCommand(ctx,\"AUTH %s\", config.conn_info.auth);\n    else\n        reply = redisCommand(ctx,\"AUTH %s %s\", config.conn_info.user, config.conn_info.auth);\n    if (reply != NULL) {\n        if (reply->type == REDIS_REPLY_ERROR) {\n            if (hostsocket == NULL)\n                fprintf(stderr, \"Node %s:%d replied with error:\\n%s\\n\", ip, port, reply->str);\n            else\n                fprintf(stderr, \"Node %s replied with error:\\n%s\\n\", hostsocket, reply->str);\n            freeReplyObject(reply);\n            redisFree(ctx);\n            exit(1);\n        }\n        freeReplyObject(reply);\n        return ctx;\n    }\n    fprintf(stderr, \"ERROR: failed to fetch reply from \");\n    if (hostsocket == NULL)\n        fprintf(stderr, \"%s:%d\\n\", ip, port);\n    else\n        fprintf(stderr, \"%s\\n\", hostsocket);\ncleanup:\n    freeReplyObject(reply);\n    redisFree(ctx);\n    return NULL;\n}\n","sourceCodeStart":236,"sourceCodeEnd":272,"githubUrl":"https://github.com/redis/redis/blob/3acc0c49cf5ad2af9425d333e62728342dd6159b/src/redis-benchmark.c#L236-L272","documentation":"Same AUTH-failure path as error 30, but reached when redis-benchmark connects through a Unix domain socket (hostsocket != NULL) instead of TCP. The message prints the socket path in place of the IP:port pair and otherwise terminates the run identically.","triggerScenarios":"Running redis-benchmark with -s /var/run/redis/redis-server.sock and an AUTH that the server rejects. The branch at src/redis-benchmark.c:253-254 is taken because hostsocket is non-NULL.","commonSituations":"Socket permissions changed, socket protected by a different ACL user than the TCP listener, Redis restarted with a new requirepass but the old socket path still in use, or a misconfigured supervisord unit pointing -s at a stale socket from a previous instance.","solutions":["Confirm the socket exists and its owner matches the user running the benchmark: ls -l /var/run/redis/redis-server.sock","Test auth over the socket: redis-cli -s /var/run/redis/redis-server.sock -a <password> --no-auth-warning ping","If ACLs are in use, add --user <username> to the benchmark invocation","Restart Redis to recreate the socket if it is stale from a prior process"],"exampleFix":"# before\nredis-benchmark -s /var/run/redis/redis-server.sock -a oldpass\n# after\nredis-benchmark -s /var/run/redis/redis-server.sock --user default -a 'newpass'","handlingStrategy":"validation","validationCode":"/* Same pre-flight AUTH probe, but for a unix-socket target. */\nredisReply *probe = redisCommand(ctx, \"AUTH %s %s\",\n    config.conn_info.user ? config.conn_info.user : \"default\",\n    config.conn_info.auth);\nif (probe != NULL && probe->type == REDIS_REPLY_ERROR) {\n    fprintf(stderr, \"auth rejected on socket %s: %s\\n\", hostsocket, probe->str);\n    freeReplyObject(probe); redisFree(ctx); return NULL;\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Confirm the unix socket path is correct and owned by the right Redis instance before probing AUTH.","Run the isolated AUTH probe against the socket target; a socket may point to a differently-configured Redis than the TCP port.","Distinguish NOAUTH from WRONGPASS in the reply string and only treat credential errors as fatal.","Validate file permissions on the socket: an unprivileged user may get a permission error that looks like an auth error."],"tags":["redis","auth","benchmark","connection","unix-socket"],"analyzedSha":"3acc0c49cf5ad2af9425d333e62728342dd6159b","analyzedAt":"2026-08-01T22:07:56.715Z","schemaVersion":2}