X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fhash.c;h=6ead8d46e38793fb5bfea0606346ee03c95a0cfa;hb=b41c57c2f84855cfd32a7b14008ca0aceb92f32b;hp=395020a39afb2de33616be39633bf4be03cf2c0e;hpb=7c7750f02368b570353ea109f23a0ea26d226e02;p=m6w6%2Flibmemcached diff --git a/libmemcached/hash.c b/libmemcached/hash.c index 395020a3..6ead8d46 100644 --- a/libmemcached/hash.c +++ b/libmemcached/hash.c @@ -92,15 +92,17 @@ uint32_t memcached_generate_hash_value(const char *key, size_t key_length, memca } case MEMCACHED_HASH_JENKINS: { - hash=jenkins_hash(key, key_length, 13); + hash= jenkins_hash(key, key_length, 13); break; } + case MEMCACHED_HASH_MAX: default: { - WATCHPOINT_ASSERT(hash_algorithm); + WATCHPOINT_ASSERT(0); break; } } + return hash; } @@ -109,9 +111,9 @@ uint32_t generate_hash(memcached_st *ptr, const char *key, size_t key_length) uint32_t hash= 1; /* Just here to remove compile warning */ - WATCHPOINT_ASSERT(ptr->number_of_hosts); + WATCHPOINT_ASSERT(memcached_server_count(ptr)); - if (ptr->number_of_hosts == 1) + if (memcached_server_count(ptr) == 1) return 0; hash= memcached_generate_hash_value(key, key_length, ptr->hash); @@ -148,14 +150,14 @@ static uint32_t dispatch_host(memcached_st *ptr, uint32_t hash) return right->index; } case MEMCACHED_DISTRIBUTION_MODULA: - return hash % ptr->number_of_hosts; + return hash % memcached_server_count(ptr); case MEMCACHED_DISTRIBUTION_RANDOM: - return (uint32_t) random() % ptr->number_of_hosts; + return (uint32_t) random() % memcached_server_count(ptr); + case MEMCACHED_DISTRIBUTION_CONSISTENT_MAX: default: WATCHPOINT_ASSERT(0); /* We have added a distribution without extending the logic */ - return hash % ptr->number_of_hosts; + return hash % memcached_server_count(ptr); } - /* NOTREACHED */ } @@ -167,9 +169,9 @@ uint32_t memcached_generate_hash(memcached_st *ptr, const char *key, size_t key_ { uint32_t hash= 1; /* Just here to remove compile warning */ - WATCHPOINT_ASSERT(ptr->number_of_hosts); + WATCHPOINT_ASSERT(memcached_server_count(ptr)); - if (ptr->number_of_hosts == 1) + if (memcached_server_count(ptr) == 1) return 0; if (ptr->flags.hash_with_prefix_key) @@ -191,12 +193,15 @@ uint32_t memcached_generate_hash(memcached_st *ptr, const char *key, size_t key_ WATCHPOINT_ASSERT(hash); - if (memcached_behavior_get(ptr, MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS) && ptr->next_distribution_rebuild) { + if (memcached_behavior_get(ptr, MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS) && ptr->next_distribution_rebuild) + { struct timeval now; if (gettimeofday(&now, NULL) == 0 && now.tv_sec > ptr->next_distribution_rebuild) + { run_distribution(ptr); + } } return dispatch_host(ptr, hash);