Browse Source

consensus: lock before loading commit

pull/265/head
Ethan Buchman 8 years ago
parent
commit
c6a648fad7
2 changed files with 10 additions and 6 deletions
  1. +1
    -6
      consensus/reactor.go
  2. +9
    -0
      consensus/state.go

+ 1
- 6
consensus/reactor.go View File

@ -658,12 +658,7 @@ OUTER_LOOP:
{
prs := ps.GetRoundState()
if prs.CatchupCommitRound != -1 && 0 < prs.Height && prs.Height <= conR.conS.blockStore.Height() {
var commit *types.Commit
if prs.Height == conR.conS.blockStore.Height() {
commit = conR.conS.blockStore.LoadSeenCommit(prs.Height)
} else {
commit = conR.conS.blockStore.LoadBlockCommit(prs.Height)
}
commit := conR.conS.LoadCommit(prs.Height)
peer.TrySend(StateChannel, struct{ ConsensusMessage }{&VoteSetMaj23Message{
Height: prs.Height,
Round: commit.Round(),


+ 9
- 0
consensus/state.go View File

@ -319,6 +319,15 @@ func (cs *ConsensusState) SetPrivValidator(priv PrivValidator) {
cs.privValidator = priv
}
func (cs *ConsensusState) LoadCommit(height int) *types.Commit {
cs.mtx.Lock()
defer cs.mtx.Unlock()
if height == cs.blockStore.Height() {
return cs.blockStore.LoadSeenCommit(height)
}
return cs.blockStore.LoadBlockCommit(height)
}
func (cs *ConsensusState) OnStart() error {
cs.BaseService.OnStart()


Loading…
Cancel
Save