()
| 223 | } |
| 224 | |
| 225 | func (n *Node) watchLeaderChange() { |
| 226 | n.wg.Add(1) |
| 227 | go func() { |
| 228 | defer n.wg.Done() |
| 229 | |
| 230 | ticker := time.NewTicker(time.Second) |
| 231 | defer ticker.Stop() |
| 232 | for { |
| 233 | select { |
| 234 | case <-n.shutdown: |
| 235 | return |
| 236 | case <-ticker.C: |
| 237 | lead := n.GetRaftLead() |
| 238 | if lead != n.leader { |
| 239 | n.leader = lead |
| 240 | select { |
| 241 | case <-n.shutdown: |
| 242 | return |
| 243 | case n.leaderChanged <- true: |
| 244 | } |
| 245 | n.logger.Info("Found leader changed", zap.Uint64("leader", lead)) |
| 246 | } |
| 247 | } |
| 248 | } |
| 249 | }() |
| 250 | } |
| 251 | |
| 252 | func (n *Node) runRaftMessages() error { |
| 253 | n.wg.Add(1) |
no test coverage detected