Skip to content

Comments

[CLEAN] Synthetic Benchmark PR #14224 - Fix HINCRBYFLOAT removes field expiration on replica#105

Open
tomerqodo wants to merge 1 commit intobase_pr_14224_20260121_5927from
clean_pr_14224_20260121_5927
Open

[CLEAN] Synthetic Benchmark PR #14224 - Fix HINCRBYFLOAT removes field expiration on replica#105
tomerqodo wants to merge 1 commit intobase_pr_14224_20260121_5927from
clean_pr_14224_20260121_5927

Conversation

@tomerqodo
Copy link

Benchmark PR redis#14224

Type: Clean (correct implementation)

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