raft: atomic load id
parent
18d95b336f
commit
3f435571d3
11
raft/node.go
11
raft/node.go
|
@ -3,6 +3,7 @@ package raft
|
|||
import (
|
||||
"encoding/json"
|
||||
golog "log"
|
||||
"sync/atomic"
|
||||
)
|
||||
|
||||
type Interface interface {
|
||||
|
@ -40,7 +41,9 @@ func New(id int64, heartbeat, election tick) *Node {
|
|||
return n
|
||||
}
|
||||
|
||||
func (n *Node) Id() int64 { return n.sm.id }
|
||||
func (n *Node) Id() int64 {
|
||||
return atomic.LoadInt64(&n.sm.id)
|
||||
}
|
||||
|
||||
func (n *Node) Index() int { return n.sm.log.lastIndex() }
|
||||
|
||||
|
@ -48,11 +51,11 @@ func (n *Node) Term() int { return n.sm.term }
|
|||
|
||||
func (n *Node) Applied() int { return n.sm.log.applied }
|
||||
|
||||
func (n *Node) HasLeader() bool { return n.sm.lead != none }
|
||||
func (n *Node) HasLeader() bool { return n.Leader() != none }
|
||||
|
||||
func (n *Node) IsLeader() bool { return n.sm.lead == n.Id() }
|
||||
func (n *Node) IsLeader() bool { return n.Leader() == n.Id() }
|
||||
|
||||
func (n *Node) Leader() int64 { return n.sm.lead }
|
||||
func (n *Node) Leader() int64 { return atomic.LoadInt64(&n.sm.lead) }
|
||||
|
||||
// Propose asynchronously proposes data be applied to the underlying state machine.
|
||||
func (n *Node) Propose(data []byte) { n.propose(Normal, data) }
|
||||
|
|
Loading…
Reference in New Issue