Skip to content

Code Review Bench PR #14224 - Fix HINCRBYFLOAT removes field expiration on replica#9

Open
tomerqodo wants to merge 2 commits intobase_pr_14224_20260125_6915from
corrupted_pr_14224_20260125_6915
Open

Code Review Bench PR #14224 - Fix HINCRBYFLOAT removes field expiration on replica#9
tomerqodo wants to merge 2 commits intobase_pr_14224_20260125_6915from
corrupted_pr_14224_20260125_6915

Conversation

@tomerqodo
Copy link

Code Review Bench PR redis#14224

Original PR Title: Fix HINCRBYFLOAT removes field expiration on replica
Original PR Description: Fixes redis#14218

Before, we replicate HINCRBYFLOAT as an HSET command with the final value in order to make sure that differences in float precision or formatting will not create differences in replicas or after an AOF restart.
However, on the replica side, if the field has an expiration time, HSET will remove it, even though the master retains it. This leads to inconsistencies between the master and the replica.

To address this, we now use the HSETEX command with the KEEPTTL flag instead of HSET, ensuring that the field’s TTL is preserved.

This bug was introduced in version 7.4, but the HSETEX command was only implemented from version 8.0. Therefore, this patch does not fix the issue in the 7.4 branch, a separate commit is needed to address it in 7.4.
Original PR URL: redis#14224

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

Successfully merging this pull request may close these issues.

2 participants