OpenAtomFoundation / pikiwidb

a high-performance, large-capacity, multi-tenant, data-persistent, strong data consistency based on raft, Redis-compatible elastic KV data storage system based on RocksDB
BSD 3-Clause "New" or "Revised" License
198 stars 63 forks source link

feat: add client cmd #359

Closed gukj-spel closed 3 months ago

gukj-spel commented 3 months ago

add client command and corresponding got test CLIENT <GETNAME | SETNAME name | LIST [ID client_id1...client_idn] | KILL all | KILL ID client_id | KILL ADDR ip:port>

Summary by CodeRabbit

coderabbitai[bot] commented 3 months ago

整体变更概述

此次更新引入了多个新功能,主要集中于PikiwiDB以及相关客户端管理命令的增强。新增了获取和设置客户端信息、列出客户端、终止客户端等操作的能力,并调整了文件操作顺序以优化代码执行流。此外,还更新了相关的测试用例和默认配置文件,以支持这些新功能。

变更内容

文件路径 变更总结
.github/workflows/pikiwidb.yml go test 命令增加了 15 秒的超时设置
src/base_cmd.h 引入了新的管理命令,用于获取和设置客户端名称、列出客户端、终止客户端等操作
src/client.cc, src/client.h 新增 GetFdGetUniqueIdGetClientInfo 等方法;引入 ClientInfo 结构体并改进类成员的可见性和命名规范
src/cmd_admin.cc 添加了新的命令类以实现客户端管理相关功能,如 CmdClientCmdClientGetname
src/cmd_table_manager.cc 更新了初始化命令表以包含新的客户端命令组及其子命令
src/net/tcp_listener.cc 调整了操作顺序,优化了连接回调的设置流程
src/pikiwidb.cc, src/pikiwidb.h 引入了多个新的客户端管理方法并新增相关数据结构,如 client_map_mutexkiller_mutex
tests/admin_test.go 增加了相关新功能的测试案例
tests/assets/default.conf 更新了默认配置文件,调整了一些设置并添加了 RocksDB 的配置项

序列图

sequenceDiagram
    participant Admin as Admin
    participant PikiwiDB as PikiwiDB
    participant Client as Client
    participant TCPListener as TCPListener

    Admin ->> PikiwiDB: Send "list clients" command
    PikiwiDB ->> Client: Get clients information
    Client -->> PikiwiDB: Return clients list
    PikiwiDB ->> Admin: Return clients list

    Admin ->> PikiwiDB: Send "kill client" command
    PikiwiDB ->> Client: Kill specific client
    Client -->> PikiwiDB: Client terminated
    PikiwiDB ->> Admin: Confirm termination

兔子诗歌

在代码的世界里,我们携手共进,
新增命令如春风拂面,
获取名称,设置名称,终止客户端,
RocksDB 配置新的篇章打开。
在配置文件中,变化纷至沓来,
让我们迎接,如阳光般明媚的未来。


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?

Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit .` - `Generate unit testing code for this file.` - `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. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - 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 generate interesting stats about this repository and render them as a table.` - `@coderabbitai show all the console.log statements in this repository.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (invoked as PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. Additionally, you can add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. ### CodeRabbit Configration 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](https://docs.coderabbit.ai/guides/configure-coderabbit) 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` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.