Garnet is a remote cache-store from Microsoft Research that offers strong performance (throughput and latency), scalability, storage, recovery, cluster sharding, key migration, and replication features. Garnet can work with existing Redis clients.
This PR started as an attempt to fix the parsing regression introduced in 52024990.
It involved into a general refactoring of RespReadUtils to clearly separate the parts used only by the clients to parse RESP responses vs those used internally by the server.
This distinction is crucial because the server does not access negative length headers (i.e. $-1\r\n) but the client can accept them as part of a response packet.
Following is a summary of the related fixes/enhancements:
[x] Added RespReadResponseUtils wrapper to cleanly separate client specific Resp parsing methods.
[x] Eliminate allowNull flag in RespReadUtils since we do not allow null parsing on the server side.
[x] Split ReadLengthHeader into ReadUnsignedLengthHeader and ReadSignedLengthHeader to be used with server and client respectively.
[x] Make change to RespOnlineBench to retry requests when an exception occurs (e.g. -ERR MOVED).
This PR started as an attempt to fix the parsing regression introduced in 52024990. It involved into a general refactoring of RespReadUtils to clearly separate the parts used only by the clients to parse RESP responses vs those used internally by the server. This distinction is crucial because the server does not access negative length headers (i.e. $-1\r\n) but the client can accept them as part of a response packet.
Following is a summary of the related fixes/enhancements: