Open jhpark816 opened 3 years ago
dummy fetch 기능이 불필요하여 제거하였습니다.
dummy fetch 제거하면 unit test 실패합니다. 이에 관한 @uhm0311 코멘트는 아래와 같습니다.
commit: https://github.com/naver/arcus-c-client/commit/7b5cf920f1efea242ca5e7ab684a6b739043bedd 해당 커밋으로 유닛 테스트 실패가 생겼습니다.
tests/mem_functions.cc:4309: Assertion "no_msg == 0" failed, in noreply_test
Testing noreply [ failed ]
해당 테스트 코드는 다음과 같습니다.
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() 함수는 다음과 같습니다.
85번 라인에서 호출하는 memcached_fetch_result() 함수는 다음과 같습니다.
201번 라인에서 호출하는 memcached_server_response_reset() 함수는 다음과 같습니다.
따라서 memcached_fetch() 함수를 호출하는 부분은 남겨야 합니다.
@uhm0311 의 추가 코멘트 입니다.
libmemcached 1.0 버전을 살펴보니, get.cc에서 dummy fetch를 제거한 뒤 문제 되는 테스트 코드를 #if 0
으로 비활성화 해뒀습니다.
#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를 제거하는 방향을 유지하려면 같은 조치를 취해야 할 것 같습니다.
memcached_get_by_key() 함수의 마지막에 아래와 같은 dummy fetch 코드가 있다. 필요성을 검토해 보고, 필요가 없다면 제거합시다.