Skip to content

feat:Batch refactoring of strongly consistent code#3147

Closed
YuCai18 wants to merge 1 commit intoOpenAtomFoundation:feature/consistency_3.5from
YuCai18:feature/consistency_3.5
Closed

feat:Batch refactoring of strongly consistent code#3147
YuCai18 wants to merge 1 commit intoOpenAtomFoundation:feature/consistency_3.5from
YuCai18:feature/consistency_3.5

Conversation

@YuCai18
Copy link
Copy Markdown
Collaborator

@YuCai18 YuCai18 commented Aug 13, 2025

单线程压测结果:
image

image

多线程压测结果:
压测结果

日志截图

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Aug 13, 2025

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions github-actions Bot added ✏️ Feature New feature or request Invalid PR Title labels Aug 13, 2025
@YuCai18 YuCai18 changed the title Feat:Parallel modification of strong consistency code feat:Batch refactoring of strongly consistent code Aug 14, 2025
Comment thread src/pika_client_conn.cc Outdated
std::promise<void> promise;
task->futures.push_back(promise.get_future());

g_pika_server->ScheduleClientPool(&PikaClientConn::ParallelExecRedisCmd, new std::tuple(shared_from_this(), argvs[i], task, i, std::move(promise), cache_miss_in_rtc), false, false);
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

你目前压测的方式,这里的argvs都是一个,只有客户端使用pipeline方式的时候才会大于1.
另外,如果是pipeline的方式压测,你这里的逻辑是把这些命令执行又拆分到同一个线程池,线程池都占满的时候,会不会导致hang住?

Comment thread src/pika_rm.cc Outdated
bool window_elapsed = (now_us - leader_election_token) >= timeout_us;
bool enough_accumulated = ws->accepted.load(std::memory_order_relaxed) >= min_batch_wait;

if (!window_elapsed && !enough_accumulated) {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

这里是说没攒够指定时间和个数,就直接return?那不就直接写rocksdb了吗?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

你说的对,这里需要改成“或”,满足一个条件就发送,不能提前返回。

@github-actions github-actions Bot added the 🧹 Updates This will not be worked on label Aug 14, 2025
@YuCai18 YuCai18 force-pushed the feature/consistency_3.5 branch from 1d9bac4 to 797ffa6 Compare August 22, 2025 07:37
g_pika_server->CheckLeaderProtectedMode();

// TODO(whoiami) timeout
s = g_pika_server->TriggerSendBinlogSync();
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

需要理一下这里为什么 TriggerSendBinlogSync 位置需要换

@Mixficsol Mixficsol closed this Sep 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✏️ Feature New feature or request 🧹 Updates This will not be worked on

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants