Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request]: High integrity mode (already implemented in another client/s) #1925

Open
avislavkin opened this issue Oct 20, 2024 · 4 comments

Comments

@avislavkin
Copy link

This is a client-library alternative suggestion to redis/redis#13240, to address the issue of protocol desync going undetected for at least "some" commands and causing mayhem.
Full details of suggested resolution and implementation are here:
StackExchange/StackExchange.Redis#2706

@uglide
Copy link
Contributor

uglide commented Oct 21, 2024

@avislavkin Could you share more details about the use-case and environment where you experienced RESP "desync" issues?

@avislavkin
Copy link
Author

avislavkin commented Oct 21, 2024

@uglide, I haven't come across those issues. You can find all the details I have here. @mgravell might be able to share some use cases he's encountered.

@mgravell
Copy link

mgravell commented Oct 22, 2024

The short version here would be "heck knows". This has been reported stupendously rarely; cause could be anything from a rare edge-case bug at any layer, including things like the client, the framework, TLS, the CPU/RAM, the NIC/FPGA, any intermediary gateway/proxy, or the server. I do know that on at least one occasion VeryBadThingsTM have been observed, and there is no intended finger-pointing at any specific layer, least of all Redis itself. The point of the feature in SE.Redis is as a defence-in-depth safeguard: "Impossible things happened? We should at least detect that there was a problem,and not propagate incorrect results". SE.Redis is arguably a lot more vulnerable to this problem because it makes much higher use of multiplexing than most other clients as the default and primary mechanism. If that isn't true for ioredis (you can't really desync on lease/request/response/return cycle): you might not need this.

@avislavkin
Copy link
Author

@uglide, considering the problem statement that @mgravell mentioned earlier, could ioredis encounter the same issue? Does ioredis require this feature as well?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants