X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fstorage.c;h=ba66cf878799c3cd5eb7136ca6dbdb87df9a54ec;hb=409b488619c121e786e8538d7fde5c9229c247ed;hp=7a96b778368c98e3398c102cce69c4571064094d;hpb=857ca43d65fe6a52474641130312d26d125bef15;p=m6w6%2Flibmemcached diff --git a/libmemcached/storage.c b/libmemcached/storage.c index 7a96b778..ba66cf87 100644 --- a/libmemcached/storage.c +++ b/libmemcached/storage.c @@ -70,7 +70,7 @@ static inline memcached_return_t memcached_send(memcached_st *ptr, memcached_return_t rc; char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE]; uint32_t server_key; - memcached_server_instance_st *instance; + memcached_server_write_instance_st instance; WATCHPOINT_ASSERT(!(value == NULL && value_length > 0)); @@ -92,7 +92,7 @@ static inline memcached_return_t memcached_send(memcached_st *ptr, flags, cas, verb); } - server_key= memcached_generate_hash(ptr, master_key, master_key_length); + server_key= memcached_generate_hash_with_redistribution(ptr, master_key, master_key_length); instance= memcached_server_instance_fetch(ptr, server_key); if (cas) @@ -189,7 +189,8 @@ static inline memcached_return_t memcached_send(memcached_st *ptr, return rc; error: - memcached_io_reset(instance); + if (rc == MEMCACHED_WRITE_FAILURE) + memcached_io_reset(instance); return rc; } @@ -444,10 +445,10 @@ static memcached_return_t memcached_send_binary(memcached_st *ptr, bool flush; protocol_binary_request_set request= {.bytes= {0}}; size_t send_length= sizeof(request.bytes); - uint32_t server_key= memcached_generate_hash(ptr, master_key, - master_key_length); + uint32_t server_key= memcached_generate_hash_with_redistribution(ptr, master_key, + master_key_length); - memcached_server_instance_st *server= + memcached_server_write_instance_st server= memcached_server_instance_fetch(ptr, server_key); bool noreply= server->root->flags.no_reply; @@ -502,7 +503,7 @@ static memcached_return_t memcached_send_binary(memcached_st *ptr, for (uint32_t x= 0; x < ptr->number_of_replicas; x++) { - memcached_server_instance_st *instance; + memcached_server_write_instance_st instance; ++server_key; if (server_key == memcached_server_count(ptr))