Fix for Raft stability (#886)

* increased the size of blockProposal and chainHeadEvent channels. Changed the call to mintNewBlock from a go routine to a function call. Changes done to improve performance of Raft in high load envs
This commit is contained in:
Sai V 2019-11-22 01:04:12 +08:00 committed by Samer Falah
parent f80914446a
commit 5cb92ceb3c
3 changed files with 8 additions and 3 deletions

View File

@ -1323,3 +1323,8 @@ func checkAccount(fromAcct common.Address, toAcct *common.Address) error {
}
return nil
}
// helper function to return chainHeadChannel size
func GetChainHeadChannleSize() int {
return chainHeadChanSize
}

View File

@ -110,7 +110,7 @@ func NewProtocolManager(raftId uint16, raftPort uint16, blockchain *core.BlockCh
joinExisting: joinExisting,
blockchain: blockchain,
eventMux: mux,
blockProposalC: make(chan *types.Block),
blockProposalC: make(chan *types.Block, 10),
confChangeProposalC: make(chan raftpb.ConfChange),
httpstopc: make(chan struct{}),
httpdonec: make(chan struct{}),

View File

@ -89,7 +89,7 @@ func newMinter(config *params.ChainConfig, eth *RaftService, blockTime time.Dura
speculativeChain: newSpeculativeChain(),
invalidRaftOrderingChan: make(chan InvalidRaftOrdering, 1),
chainHeadChan: make(chan core.ChainHeadEvent, 1),
chainHeadChan: make(chan core.ChainHeadEvent, core.GetChainHeadChannleSize()),
txPreChan: make(chan core.NewTxsEvent, 4096),
}
@ -213,7 +213,7 @@ func throttle(rate time.Duration, f func()) func() {
for range ticker.C {
<-request.Out()
go f()
f()
}
}()