Skip to content

[CORRUPTED] Synthetic Benchmark PR #14224 - Fix HINCRBYFLOAT removes field expiration on replica#76

Open
ofir-frd wants to merge 2 commits intobase_pr_14224_20260121_8117from
corrupted_pr_14224_20260121_8117
Open

[CORRUPTED] Synthetic Benchmark PR #14224 - Fix HINCRBYFLOAT removes field expiration on replica#76
ofir-frd wants to merge 2 commits intobase_pr_14224_20260121_8117from
corrupted_pr_14224_20260121_8117

Conversation

@ofir-frd
Copy link

Benchmark PR redis#14224

Type: Corrupted (contains bugs)

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

Compliance Violation

  • Rule: Internal Helper Functions Must Be Declared Static
  • Language: C
  • File: src/t_hash.c

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

Comments