-
Notifications
You must be signed in to change notification settings - Fork 538
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
Data gets corrupted when incrby happens on a key after TTL expires #875
Comments
I tried to reproduce it but I am not able to. Below is my attempt to reproduce it. Let me know if I did something wrong
|
If you are not able to provide a sequence of redis-cli commands that reproduces this error then:
|
Maybe it has something to do with the pipelined commands. When I get a chance I'll try running redis-cli with --pipe here's the Rust code that shows the pipeline command used
|
Describe the bug
When a key expires, and then I attempt to increment it with the value of
0
(INCRBY
), the key becomes corrupted.I have a program that increments the key by zero if the key does not exist, and it has events every few seconds that cause this logic chain to execute Here's the output of manually polling that entry while this happens using a redis CLI client:
You can see the TTL count down, the value go to nil and the TTL to -2 as expected, but when the program attemps to incr by zero you can see a garbage value appear. That key is now permanently corrupted, it never recovers unless I flush the database or DEL that key.
Steps to reproduce the bug
Expected behavior
At step 4 when incrementing a
(nil)
entry I should get a value of zero in the keyScreenshots
No response
Release version
GarnetServer --version gives me an error, so here's the docker container info instead
IDE
No response
OS version
Docker Engine: 20.10.17 (on OSX)
Additional context
I'm using rust's client API with a pipeline. This bug does not reproduce on redict 7.1.3
The text was updated successfully, but these errors were encountered: