Merge in behavior change such that if a weight is specified we now turn on
authorBrian Aker <brian@tangent.org>
Sun, 3 Apr 2011 04:19:46 +0000 (21:19 -0700)
committerBrian Aker <brian@tangent.org>
Sun, 3 Apr 2011 04:19:46 +0000 (21:19 -0700)
weighting automagically.

ChangeLog
libmemcached/server.c

index 9c0bea9ccff6f3769ce1fad28d73f381faa11560..b2ca1f743bb58f53157ae650cfeb78570dd2a7b8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,9 @@
   * New parser calls for generating memcached_st objects.
   * New error system.
 
+  * A behavior change has been now made that if you specify a weight for any
+  server, we enable the weight flag and do weight balancing.
+
 0.48 Tue Mar 15 23:05:18 PDT 2011
   * Fix memory leak in server parse.
   * Move test framework out to be its own library (easier to work with Gearman).
index fa750c257424b9ce98c4f24d6028f7f559caf615..ea44092cc43d12068b6bc97839355599c0f664d1 100644 (file)
@@ -52,12 +52,21 @@ static inline void _server_init(memcached_server_st *self, const memcached_st *r
     self->next_retry= 0;
   }
 
+  if (self->weight > 1 && root)
+  {
+    ((memcached_st *)root)->ketama.weighted= true;
+  }
+
   self->root= root;
   self->limit_maxbytes= 0;
   if (hostname == NULL)
+  {
     self->hostname[0]= 0;
+  }
   else
+  {
     strncpy(self->hostname, hostname, NI_MAXHOST - 1);
+  }
 }
 
 static memcached_server_st *_server_create(memcached_server_st *self, const memcached_st *memc)
@@ -246,8 +255,6 @@ void memcached_server_list_free(memcached_server_list_st self)
   if (self == NULL)
     return;
 
-  const memcached_st *root= self->root;
-
   for (uint32_t x= 0; x < memcached_server_list_count(self); x++)
   {
     if (self[x].address_info)
@@ -257,6 +264,7 @@ void memcached_server_list_free(memcached_server_list_st self)
     }
   }
 
+  const memcached_st *root= self->root;
   if (root)
   {
     libmemcached_free(root, self);