X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fget.c;h=1df6247cbbcf6b3f6d12af8e63de03aa5793e655;hb=04ef974c23973986d4475e3cb8a876012264e2da;hp=051197b1c1229dbf31159bfb51c4e1a1da6c472c;hpb=9b767485048053ad0b4c2897a0d3784aa6e9fe10;p=m6w6%2Flibmemcached diff --git a/libmemcached/get.c b/libmemcached/get.c index 051197b1..1df6247c 100644 --- a/libmemcached/get.c +++ b/libmemcached/get.c @@ -144,7 +144,7 @@ static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr, size_t number_of_keys, bool mget_mode) { - unsigned int x; + uint32_t x; memcached_return_t rc= MEMCACHED_NOTFOUND; const char *get_command= "get "; uint8_t get_command_length= 4; @@ -169,7 +169,7 @@ static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr, { if (ptr->flags.verify_key && (memcached_key_test((const char * const *)&master_key, &master_key_length, 1) == MEMCACHED_BAD_KEY_PROVIDED)) return MEMCACHED_BAD_KEY_PROVIDED; - master_server_key= memcached_generate_hash(ptr, master_key, master_key_length); + master_server_key= memcached_generate_hash_with_redistribution(ptr, master_key, master_key_length); is_master_key_set= true; } @@ -181,7 +181,7 @@ static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr, */ for (x= 0; x < memcached_server_count(ptr); x++) { - memcached_server_instance_st *instance= + memcached_server_write_instance_st instance= memcached_server_instance_fetch(ptr, x); if (memcached_server_response_count(instance)) @@ -212,7 +212,7 @@ static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr, */ for (x= 0; x < number_of_keys; x++) { - memcached_server_instance_st *instance; + memcached_server_write_instance_st instance; uint32_t server_key; if (is_master_key_set) @@ -221,7 +221,7 @@ static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr, } else { - server_key= memcached_generate_hash(ptr, keys[x], key_length[x]); + server_key= memcached_generate_hash_with_redistribution(ptr, keys[x], key_length[x]); } instance= memcached_server_instance_fetch(ptr, server_key); @@ -274,7 +274,7 @@ static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr, */ for (x= 0; x < memcached_server_count(ptr); x++) { - memcached_server_instance_st *instance= + memcached_server_write_instance_st instance= memcached_server_instance_fetch(ptr, x); if (memcached_server_response_count(instance)) @@ -362,7 +362,7 @@ static memcached_return_t simple_binary_mget(memcached_st *ptr, for (x= 0; x < number_of_keys; x++) { uint32_t server_key; - memcached_server_instance_st *instance; + memcached_server_write_instance_st instance; if (is_master_key_set) { @@ -370,7 +370,7 @@ static memcached_return_t simple_binary_mget(memcached_st *ptr, } else { - server_key= memcached_generate_hash(ptr, keys[x], key_length[x]); + server_key= memcached_generate_hash_with_redistribution(ptr, keys[x], key_length[x]); } instance= memcached_server_instance_fetch(ptr, server_key); @@ -409,7 +409,7 @@ static memcached_return_t simple_binary_mget(memcached_st *ptr, if ((memcached_io_write(instance, request.bytes, sizeof(request.bytes), false) == -1) || (memcached_io_write(instance, keys[x], - key_length[x], (char) flush) == -1)) + key_length[x], flush) == -1)) { memcached_server_response_reset(instance); rc= MEMCACHED_SOME_ERRORS; @@ -436,7 +436,7 @@ static memcached_return_t simple_binary_mget(memcached_st *ptr, for (x= 0; x < memcached_server_count(ptr); x++) { - memcached_server_instance_st *instance= + memcached_server_write_instance_st instance= memcached_server_instance_fetch(ptr, x); if (memcached_server_response_count(instance)) @@ -484,7 +484,7 @@ static memcached_return_t replication_binary_mget(memcached_st *ptr, for (x= 0; x < number_of_keys; ++x) { - memcached_server_instance_st *instance; + memcached_server_write_instance_st instance; if (hash[x] == memcached_server_count(ptr)) continue; /* Already successfully sent */ @@ -588,11 +588,19 @@ static memcached_return_t binary_mget_by_key(memcached_st *ptr, } if (is_master_key_set) + { for (size_t x= 0; x < number_of_keys; x++) + { hash[x]= master_server_key; + } + } else + { for (size_t x= 0; x < number_of_keys; x++) - hash[x]= memcached_generate_hash(ptr, keys[x], key_length[x]); + { + hash[x]= memcached_generate_hash_with_redistribution(ptr, keys[x], key_length[x]); + } + } rc= replication_binary_mget(ptr, hash, dead_servers, keys, key_length, number_of_keys);