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

Refactor syncWithPrimary and replicaTryPartialResynchronization #1476

Open
wants to merge 13 commits into
base: unstable
Choose a base branch
from

Conversation

nitaicaro
Copy link
Contributor

@nitaicaro nitaicaro commented Dec 23, 2024

In continuation to #945

syncWithPrimary:

  • Refactored all labels, frees and error handling to function syncWithPrimaryHandleNoResponseError
  • Refactored repl_state state machine from if-else format to switch-case format
  • Besides changing the repl_state, all state machine logic moved to helper functions

replicaTryPartialResynchronization:
This function was performing two different jobs based on the value of the read_reply argument -

  • read_reply == 0: Sends the PSYNC command to the primary server.
  • read_reply == 1: Reads and processes the reply to the PSYNC command.

This change simplifies the logic by clearly separating the writing and reading stages of the PSYNC process.

The PR was split into individual commits for easy review.

Copy link

codecov bot commented Dec 23, 2024

Codecov Report

Attention: Patch coverage is 73.07692% with 49 lines in your changes missing coverage. Please review.

Project coverage is 70.96%. Comparing base (ad592f7) to head (36fe717).

Files with missing lines Patch % Lines
src/replication.c 73.07% 49 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #1476      +/-   ##
============================================
- Coverage     71.00%   70.96%   -0.04%     
============================================
  Files           120      120              
  Lines         65061    65102      +41     
============================================
+ Hits          46194    46199       +5     
- Misses        18867    18903      +36     
Files with missing lines Coverage Δ
src/replication.c 87.09% <73.07%> (-0.57%) ⬇️

... and 14 files with indirect coverage changes

@naglera naglera requested a review from PingXie December 23, 2024 12:38
Copy link
Member

@PingXie PingXie left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This kind of refactoring is really valuable for the long-term health of Valkey. It makes the codebase easier to understand, maintain, and improve, which ultimately helps us deliver better features faster. Thanks @nitaicaro and @naglera!

My main focus in this review is on the high level code structure, which looks great to me. That said, the use of goto in syncWithPrimary stands out. Let's aim to eliminate all goto statements from that function. I'll take another look and provide more detailed feedback once that's addressed.

src/replication.c Outdated Show resolved Hide resolved
src/replication.c Outdated Show resolved Hide resolved
src/replication.c Outdated Show resolved Hide resolved
src/replication.c Outdated Show resolved Hide resolved
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.

3 participants