Closed chejinge closed 3 months ago
[!WARNING]
Rate limit exceeded
@chejinge has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 25 minutes and 4 seconds before requesting another review.
How to resolve this issue?
After the wait time has elapsed, a review can be triggered using the `@coderabbitai review` command as a PR comment. Alternatively, push new commits to this PR. We recommend that you space out your commits to avoid hitting the rate limit.How do rate limits work?
CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our [FAQ](https://coderabbit.ai/docs/faq) for further information.Commits
Files that changed from the base of the PR and between 2cbc7880fdf8b9ce127b0558b8dbd7ee932c669b and 63ccac04fae20372eb1984869530eb5a89c5ab6c.
The recent updates introduce a new configuration parameter, admin-thread-pool-size
, and improve the PikaConf
and PikaServer
classes to handle admin commands separately via a distinct thread pool. Additionally, several command-related adjustments enhance management and monitoring capability, including the introduction of flag kCmdFlagsMonitor
and additional checks for admin commands. These changes collectively aim to optimize the handling of admin requests efficiently in the system.
File | Change Summary |
---|---|
conf/pika.conf |
Added admin-thread-pool-size : 2 configuration for specifying thread pool size for slow user requests. |
include/pika_command.h |
Introduced kCmdFlagsMonitor flag in CmdFlags enum and IsMonitorCmd() method in Cmd class. |
include/pika_conf.h |
Added methods and member variables to PikaConf for managing admin-related configurations pertaining to thread pool size. |
include/pika_server.h |
Added declarations for admin and slow command thread pools in PikaServer class. |
src/pika_admin.cc |
Updated ConfigCmd::ConfigGet to handle the pattern match and encode admin-thread-pool-size . |
src/pika_client_conn.cc |
Enhanced PikaClientConn::ProcessRedisCmds to handle unknown commands and determine admin command status before scheduling a task. |
src/pika_command.cc |
Added kCmdFlagsMonitor flag to specific commands and introduced IsMonitorCmd() method. |
src/pika_conf.cc |
Added logic to set admin_thread_pool_size within a specific range in PikaConf::Load() . |
src/pika_list.cc |
Updated TryToServeBLrPopWithThisKey to include is_monitor_cmd parameter. |
src/pika_server.cc |
Enhanced PikaServer with initialization, starting, stopping, and scheduling of the admin command thread pool. |
sequenceDiagram
participant User
participant PikaConf
participant PikaServer
participant CmdHandler
participant ThreadPools
User->>PikaConf: Reads admin-thread-pool-size
PikaConf->>PikaServer: Sets admin_thread_pool_size
User->>PikaServer: Sends command
PikaServer->>CmdHandler: Determine command type
CmdHandler->>PikaServer: Returns is_admin_cmd flag
alt is_admin_cmd
PikaServer->>ThreadPools: Schedule in pika_admin_cmd_thread_pool_
else not is_admin_cmd
PikaServer->>ThreadPools: Schedule in standard thread pool
end
ThreadPools->>CmdHandler: Execute command
CmdHandler->>User: Returns results
In the code a change has swept, Admin threads now adept, Commands marked to monitor, PikaServer’s a conqueror. Thread pools split and refined, Efficiency, now redesigned. 🐰🔧✨
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
将pika的info ping 等admin命令拆分出主线程,用单独的线程池去处理
为了避免 config 配置过多 这里考虑用unorderd_set写死 可以通过config修改 https://github.com/OpenAtomFoundation/pika/issues/2399
Summary by CodeRabbit
New Features
Improvements
Bug Fixes