-
Notifications
You must be signed in to change notification settings - Fork 16
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
memcached_get_by_key() 함수 마지막에 dummy fetch 필요성 검토. #155
Comments
dummy fetch 기능이 불필요하여 제거하였습니다.
|
dummy fetch 제거하면 unit test 실패합니다. commit: 7b5cf92
해당 테스트 코드는 다음과 같습니다. int no_msg=0;
for (uint32_t x= 0; x < memcached_server_count(memc); ++x)
{
memcached_server_instance_st instance=
memcached_server_instance_by_position(memc, x);
no_msg+=(int)(instance->cursor_active);
}
test_true(no_msg == 0); 아래 코드의 제거로 인해 instance->cursor_active 값이 0이 아니게 되었습니다. char *dummy_value= memcached_fetch(ptr, NULL, NULL,
&dummy_length, &dummy_flags,
&dummy_error); memcached_fetch() 함수는 다음과 같습니다. arcus-c-client/libmemcached/fetch.cc Lines 56 to 137 in 71bcafd
85번 라인에서 호출하는 memcached_fetch_result() 함수는 다음과 같습니다. arcus-c-client/libmemcached/fetch.cc Lines 139 to 248 in 71bcafd
201번 라인에서 호출하는 memcached_server_response_reset() 함수는 다음과 같습니다. arcus-c-client/libmemcached/common.h Line 174 in 71bcafd
따라서 memcached_fetch() 함수를 호출하는 부분은 남겨야 합니다. |
@uhm0311 의 추가 코멘트 입니다. libmemcached 1.0 버전을 살펴보니, get.cc에서 dummy fetch를 제거한 뒤 문제 되는 테스트 코드를 #if 0
int no_msg=0;
for (uint32_t x= 0; x < memcached_server_count(memc); ++x)
{
const memcached_instance_st * instance=
memcached_server_instance_by_position(memc, x);
no_msg+=(int)(instance->cursor_active);
}
test_true(no_msg == 0);
#endif dummy fetch를 제거하는 방향을 유지하려면 같은 조치를 취해야 할 것 같습니다. |
@ing-eoking 본 이슈를 맡아 주세요. |
이를 해결하기 위해, |
@ing-eoking |
@ing-eoking |
@ing-eoking |
기존 방식에서는 memcached_fetch를 사용하여 값이 성공적으로 가져왔는지와 관계없이 dummy fetch를 수행했습니다. 반면, 현재 PR에서는 memcached_fetch_result를 사용하며 값을 성공적으로 가져온 경우만 수행됩니다. 예를 들어, 해당 키가 존재하지 않으면 while문은 실행되지 않습니다. |
1st memcached_fetch() 결과가 NULL이면, 더 이상 memcached_fetch() 수행하지 않고 있습니다. |
바로 아래에 로직이 있었네요; dummy라는 변수를 따로 설정하고 fetch를 수행하지 않기에 기존 로직보다는 비교적 깔끔해진 것 같습니다. |
memcached_get_by_key() 함수의 마지막에 아래와 같은 dummy fetch 코드가 있다.
필요성을 검토해 보고, 필요가 없다면 제거합시다.
The text was updated successfully, but these errors were encountered: