-
Notifications
You must be signed in to change notification settings - Fork 125
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
[CBRD-25771] Add -i option to DIAGDB for input file and update usage message #5743
base: develop
Are you sure you want to change the base?
Conversation
msg/en_US.utf8/utils.msg
Outdated
@@ -839,7 +839,8 @@ valid options:\n\ | |||
6 dump disk bitmaps\n\ | |||
7 dump catalog\n\ | |||
8 dump log\n\ | |||
9 dump heap\n | |||
9 dump heap\n\ | |||
-i, --input-class-file=FILE input FILE of table names\n |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-i, --input-class-file=FILE input FILE of table names\n | |
-i, --input-class-file=FILE input FILE of table names\n |
option에 대한 설명이 위에 -o와 -d의 설명과 indent가 맞지 않는 것 같습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
수정하였습니다.
msg/ko_KR.utf8/utils.msg
Outdated
@@ -837,6 +837,7 @@ diagdb: 데이터베이스 정보 덤프\n\ | |||
7 카탈로그 덤프\n\ | |||
8 로그 덤프\n\ | |||
9 힙 덤프\n | |||
-i, --input-class-file=FILE 테이블 이름이 기입된 파일\n\ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-i, --input-class-file=FILE 테이블 이름이 기입된 파일\n\ | |
-i, --input-class-file=FILE 테이블 이름이 기입된 파일\n\ |
option에 대한 설명이 위에 -o와 -d의 설명과 indent가 맞지 않는 것 같습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
수정하였습니다.
src/executables/utility.h
Outdated
#define DIAG_INPUT_FILE_S 'i' | ||
#define DIAG_INPUT_FILE_L "input-file" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#define DIAG_INPUT_FILE_S 'i' | |
#define DIAG_INPUT_FILE_L "input-file" | |
#define DIAG_INPUT_FILE_S 'i' | |
#define DIAG_INPUT_FILE_L "input-file" |
Indent
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
수정하였습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if (diag != DIAGDUMP_HEAP && class_name != NULL)
{
goto print_diag_usage;
}
해당 코드는 diag -d 9(Heap dump)외의 옵션에서 -n 옵션이 입력되었을 때, usage를 출력해주는 코드입니다.
아마, -i 옵션 또한 유사한 동작이 필요할 필요가 있다고 생각됩니다. 해당 상황이 고려되어야 한다면, 해당 위치의 코드 수정이 필요해보입니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
수정하여 반영하였습니다.
|
||
if (class_name == NULL) | ||
if (class_name == NULL && fname == NULL) | ||
{ | ||
fprintf (outfp, "\n*** DUMP OF ALL HEAPS ***\n"); | ||
(void) file_tracker_dump_all_heap (thread_p, outfp, dump_records); | ||
} | ||
else | ||
else if (class_name && fname) | ||
{ | ||
goto print_diag_usage; | ||
} | ||
else if (class_name != NULL) | ||
{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
잘 모르는 부분이라 리뷰의 의도는 아니고, 순수한 궁금증에 여쭤보고 싶은 게 있습니다.
혹시 class_name 은 NULL인데 fname 이 NULL 이 아닌 경우에, 이 로직을 타는 경우가 있을 수 있을까요?
만약 그렇다면, fname이 NULL이 아닌 경우는 에러 처리를 안해주어도 괜찮나요?
감사합니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
말씀하신 의도를 제가 정확히 파악했는지 모르겠습니다만, class_name이 NULL이고 fname이 NULL이 아닌 경우는 input file에 대한 heap dump를 위한 로직이 실행됩니다. 해당 코드는 다른 브랜치로 PR 예정이기 때문에 현재 PR 코드에는 보이지 않습니다.
답변이 안 되셨다면 추가로 말씀해주시면 감사하겠습니다.
감사합니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아하 답변 감사드립니다. 이해되었습니다.
@@ -839,7 +839,8 @@ valid options:\n\ | |||
6 dump disk bitmaps\n\ | |||
7 dump catalog\n\ | |||
8 dump log\n\ | |||
9 dump heap\n | |||
9 dump heap\n\ | |||
-i, --input-class-file=FILE input FILE of table names\n |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
내부 요구사항에 의해 추가하는 기능으로 히든 옵션으로 정리하시죠.
@@ -1556,6 +1556,7 @@ diagdb (UTIL_FUNCTION_ARG * arg) | |||
DIAGDUMP_TYPE diag; | |||
THREAD_ENTRY *thread_p; | |||
int error_code = NO_ERROR; | |||
char *fname; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
의미있는 변수명을 사용하는 것이 좋겠습니다.
ex) class_name_list_file
@@ -1599,6 +1603,11 @@ diagdb (UTIL_FUNCTION_ARG * arg) | |||
goto print_diag_usage; | |||
} | |||
|
|||
if (diag != DIAGDUMP_HEAP && fname != NULL) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
class_name 검사와 합치는게 어떨까요?
if (diag != DIAGDUMP_HEAP && (class_name != NULL || fname != NULL))
{ | ||
fprintf (outfp, "\n*** DUMP OF ALL HEAPS ***\n"); | ||
(void) file_tracker_dump_all_heap (thread_p, outfp, dump_records); | ||
} | ||
else | ||
else if (class_name && fname) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 부분은 전달받은 class_name 또는 fname 정보를 통해 출력을 처리하는 부분입니다. 전달받은 인자에 대한 예외처리를 수행하는 코드가 들어가게 되면, 코드 가독성이 떨어지게 됩니다. 해당 검사는 위에서 if (diag != DIAGDUMP_HEAP && fname != NULL) 검사 다음에 바로 수행하는게 좋을 것 같습니다.
http://jira.cubrid.org/browse/CBRD-25771
Purpose
-i 옵션에는 클래스명이 담긴 파일이 전달되어야 한다.
-i 옵션으로 전달된 파일을 인식할 수 있도록 한다.
-n 옵션과 -i 옵션을 동시에 실행시킬 수 없다.
Implementation
Remarks