rafthttp: fix race on peer status activeSince

This commit is contained in:
Anthony Romano 2016-05-04 11:29:04 -07:00
parent b24d0032d2
commit c5af1d7a88
2 changed files with 13 additions and 7 deletions

View File

@ -219,7 +219,7 @@ func (p *peer) attachOutgoingConn(conn *outgoingConn) {
}
}
func (p *peer) activeSince() time.Time { return p.status.activeSince }
func (p *peer) activeSince() time.Time { return p.status.activeSince() }
// Pause pauses the peer. The peer will simply drops all incoming
// messages without returning an error.

View File

@ -28,10 +28,10 @@ type failureType struct {
}
type peerStatus struct {
id types.ID
mu sync.Mutex // protect variables below
active bool
activeSince time.Time
id types.ID
mu sync.Mutex // protect variables below
active bool
since time.Time
}
func newPeerStatus(id types.ID) *peerStatus {
@ -46,7 +46,7 @@ func (s *peerStatus) activate() {
if !s.active {
plog.Infof("the connection with %s became active", s.id)
s.active = true
s.activeSince = time.Now()
s.since = time.Now()
}
}
@ -58,7 +58,7 @@ func (s *peerStatus) deactivate(failure failureType, reason string) {
plog.Errorf(msg)
plog.Infof("the connection with %s became inactive", s.id)
s.active = false
s.activeSince = time.Time{}
s.since = time.Time{}
return
}
plog.Debugf(msg)
@ -69,3 +69,9 @@ func (s *peerStatus) isActive() bool {
defer s.mu.Unlock()
return s.active
}
func (s *peerStatus) activeSince() time.Time {
s.mu.Lock()
defer s.mu.Unlock()
return s.since
}