Description
Since upgrading my redis server to 6.2.6 and redis client to 4.0.2 (from 4.0.1) I've been occasionally seeing the following crash:
TypeError [ERR_INVALID_ARG_TYPE]: The "otherBuffer" argument must be an instance of Buffer or Uint8Array. Received type string ('message')
I've tracked this down to parser.optionReturnBuffers
being set to false
when it should be true
causing the 'message' string to be returned as a string rather than a Buffer.
commands-queue.ts expects this to be
a Buffer, and Buffer.equals throws the above NodeError.
This response comes in through parseResponse which calls this.#setReturnBuffers()
. I haven't been able to track down why this works correctly most of the time, but occasionally winds up setting parser.optionReturnBuffers
to false
and blowing up. Hopefully someone more familiar with the code can spot what's going on.
Environment:
- Node.js Version: 16.8.0
- Redis Server Version: 6.2.6
- Node Redis Version: 4.0.2
- Platform: Ubuntu 20.04.3 LTS (WSL2)