From 16767fbd83076e93813667d4274c8626f368d3f3 Mon Sep 17 00:00:00 2001
From: ale <ale@incal.net>
Date: Tue, 14 Oct 2014 22:27:59 +0100
Subject: [PATCH] trigger the update channel for slave -> slave transitions

Fixes a bug where master changes that did not involve the
local node were not triggering updates.
---
 masterelection/masterelection.go | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/masterelection/masterelection.go b/masterelection/masterelection.go
index 231be050..da2f9fd4 100644
--- a/masterelection/masterelection.go
+++ b/masterelection/masterelection.go
@@ -63,16 +63,15 @@ func (m *MasterElection) GetMasterAddr() string {
 }
 
 func (m *MasterElection) setState(state int) {
-	if m.State == state {
-		return
-	}
 	log.Printf("masterelection: %s -> %s",
 		stateToString(m.State),
 		stateToString(state))
+	// Order is important here: set state before triggering the
+	// update channel so that the receiver sees the right value.
+	m.State = state
 	if m.StateChange != nil {
 		m.StateChange <- state
 	}
-	m.State = state
 }
 
 func (m *MasterElection) stopper() {
-- 
GitLab