diff options
-rw-r--r-- | xlators/cluster/nsr-server/src/leader.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/xlators/cluster/nsr-server/src/leader.c b/xlators/cluster/nsr-server/src/leader.c index 73b9f66d5..944c85cdc 100644 --- a/xlators/cluster/nsr-server/src/leader.c +++ b/xlators/cluster/nsr-server/src/leader.c @@ -110,13 +110,17 @@ nsr_leader_thread (void *arg) /* We're there. Notify other parts of the code. */ nsr_set_leader(this,priv->etcd); /* Try to retain leadership. */ + index_in = index_out; + index_out = NULL; for (;;) { - index_in = index_out; - index_out = NULL; res = etcd_lock (priv->etcd, NSR_KEY, NSR_TTL, index_in, &index_out); - if (index_in && (index_in != index_out)) { - free(index_in); + if (index_out && (index_in != index_out)) { + if (index_in) { + free(index_in); + } + index_in = index_out; + index_out = NULL; } if (res != ETCD_OK) { gf_log (this->name, GF_LOG_WARNING, |