summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--xlators/cluster/nsr-server/src/leader.c12
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,