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

Use Ctrl+C to exit observer in cli mode. #328

Merged
merged 3 commits into from
Dec 4, 2023

Conversation

Helloworld-lbl
Copy link
Contributor

What problem were solved in this pull request?

Issue Number: close #281

Problem: If start observer in cli mode, we cannot exit observer by Ctrl+C.

What is changed and how it works?

在待输入命令时按下Ctrl+C后,注意到日志中有这样的记录:
"[2023-12-04 11:20:30.830780 pid:5338 tid:7fcf688ee7c0 ctx:0 WARN: my_readline@cli_communicator.cpp:71] >> failed to read line: Interrupted system call"
结合“cli_communicator.cpp:71”代码,可以知道此时系统错误被捕捉到且记录在errno中(此时errno为4)。
故当fgets读到空字符串时,若errno==4,可判定此时用户按下了Ctrl+C,这与用户输入“exit”等退出命令是等效的,故可看为用户输入了“interrupted",借用“bool is_exit_command(const char *cmd)”函数判断用户输入的命令是否是退出命令,即可实现类似于用户输入了“exit”等命令的退出效果。

Other information

    ### What problem were solved in this pull request?

    Issue Number: close oceanbase#281

    Problem: If start observer in cli mode, we cannot exit observer by Ctrl+C.

    ### What is changed and how it works?

    在待输入命令时按下Ctrl+C后,注意到日志中有这样的记录:
    "[2023-12-04 11:20:30.830780 pid:5338 tid:7fcf688ee7c0 ctx:0 WARN: my_readline@cli_communicator.cpp:71] >> failed to read line: Interrupted system call"
    结合“cli_communicator.cpp:71”代码,可以知道此时系统错误被捕捉到且记录在errno中(此时errno为4)。
    故当fgets读到空字符串时,若errno==4,可判定此时用户按下了Ctrl+C,这与用户输入“exit”等退出命令是等效的,故可看为用户输入了“interrupted",借用“bool is_exit_command(const char *cmd)”函数判断用户输入的命令是否是退出命令,即可实现类似于用户输入了“exit”等命令的退出效果。

    ### Other information
Copy link

codecov bot commented Dec 4, 2023

Codecov Report

Attention: 2 lines in your changes are missing coverage. Please review.

Comparison is base (f863d6e) 24.36% compared to head (6a2a145) 24.36%.

Files Patch % Lines
src/observer/net/cli_communicator.cpp 0.00% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #328      +/-   ##
==========================================
- Coverage   24.36%   24.36%   -0.01%     
==========================================
  Files         215      215              
  Lines       10632    10633       +1     
==========================================
  Hits         2591     2591              
- Misses       8041     8042       +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

src/observer/net/cli_communicator.cpp Outdated Show resolved Hide resolved
src/observer/net/cli_communicator.cpp Outdated Show resolved Hide resolved
@hnwyllmm hnwyllmm merged commit 2bb43bb into oceanbase:main Dec 4, 2023
4 of 6 checks passed
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.

use Ctrl+C to exit observer in cli mode
2 participants