serfEventHandler is a dispatch method on Serf Events. Should be started in a goroutine.
()
| 156 | // serfEventHandler is a dispatch method on Serf Events. Should be started in a |
| 157 | // goroutine. |
| 158 | func (n *Node) serfEventHandler() { |
| 159 | for { |
| 160 | select { |
| 161 | case <-n.quitCh: |
| 162 | return |
| 163 | case e := <-n.eventCh: |
| 164 | switch t := e.(type) { |
| 165 | case serf.MemberEvent: |
| 166 | switch t.EventType() { |
| 167 | case serf.EventMemberJoin: |
| 168 | go n.handleNodeJoins(t.Members) |
| 169 | case serf.EventMemberLeave, serf.EventMemberFailed: |
| 170 | go n.handleNodeLeaves(t.Members) |
| 171 | default: |
| 172 | // Don't handle any other event type. |
| 173 | continue |
| 174 | } |
| 175 | default: |
| 176 | n.logger.Printf("[ERROR] onecache: unexpected Serf event type %v\n", t) |
| 177 | continue |
| 178 | } |
| 179 | } |
| 180 | } |
| 181 | } |
| 182 | |
| 183 | // Exit removes this Node from the ring, kills background tasks and frees any |
| 184 | // used resources. Once this is called the Node will no longer accept |
no test coverage detected