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

bkey_range, eflag_filter 기능의 모듈화 작업. #413

Open
jhpark816 opened this issue Mar 13, 2020 · 4 comments
Open

bkey_range, eflag_filter 기능의 모듈화 작업. #413

jhpark816 opened this issue Mar 13, 2020 · 4 comments
Assignees

Comments

@jhpark816
Copy link
Collaborator

bkey_range, eflag_filter 기능은 아래 2 부분에서 함께 이용된다.

  • arcus server core 부분
  • arcus server engine 부분

현재의 문제점

  • bkey_range, eflag_filter를 다루는 코드를 필요한 곳에서 제각각 만들어 사용하고 있음.
  • 따라서, 코드 관리 부담이 커지고 실수 우려가 있음.

개선할 부분

  • 구조체 정의와 관련 로직들을 별도의 파일로 관리하면서
  • 공통으로 사용할 로직을 별도의 함수로 제공
@minkikim89
Copy link
Contributor

minkikim89 commented Mar 19, 2020

@jhpark816
core에서 btree 관련한 함수들만 보면 아래와 같은데요.

 get_bkey_from_str
 get_eflag_from_str
 get_bkey_range_from_str
 get_position_range_from_str
 get_compare_op_from_str
 get_bitwise_op_from_str
 get_efilter_from_tokens

위 함수들은 모두 input string을 파싱하기 위해서 사용하는 함수들이기 때문에 engine에서 사용하는 코드들과 함께 관리할 필요가 없을 것 같습니다.
다른 부분들에서도 제 생각에는 크게 함께 관리해야할 필요성을 느끼지 못하고 있는데요.
두 부분에서 같이 관리해야하는 코드의 예시로 어떤 부분이 있을지 알려주시면 판단하기 좋을 것 같습니다.

@jhpark816
Copy link
Collaborator Author

@minkikim89
core 부분에서는 parsing 관련 코드 밖에 없겠네요.
이번에 persistence 코드를 보니 bkey range와 eflag filter 다루는 코드가 있어,
items 모듈과 core에서도 유사 코드가 있을 거라 생각한 것인데, core에는 없는 것이네요.
engines 쪽에 유사 코드가 있는 지만 확인하고 수정 여부를 결정하죠.

@minkikim89
Copy link
Contributor

@jhpark816
cmdlogrec에서 BTREE_REAL_NBKEY 매크로를 똑같이 정의해서 사용하는 것 외에는 같은 로직을 수행하는 부분이 없어보입니다.

#define BTREE_REAL_NBKEY(nbkey) ((nbkey)==0 ? sizeof(uint64_t) : (nbkey))

이 매크로는 items.c에 있기 때문에 참조할 수 없어 재정의하여 사용하고 있습니다.

@jhpark816
Copy link
Collaborator Author

@minkikim89
OK.
본 이슈에 관련한 코드를 확인해 본 후, 수정이 필요 없으면 close 하겠습니다.

@jhpark816 jhpark816 assigned jhpark816 and unassigned minkikim89 Mar 19, 2020
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

No branches or pull requests

2 participants