Skip to content

Commit

Permalink
Merge pull request ethereum#244 from nguyenbatam/tiny_fix_problem_in_…
Browse files Browse the repository at this point in the history
…miner

fix error deadlocked master node & chain
  • Loading branch information
ngtuna authored Nov 3, 2018
2 parents 0989113 + f924946 commit 217e821
Showing 1 changed file with 18 additions and 18 deletions.
36 changes: 18 additions & 18 deletions miner/worker.go
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,24 @@ func (self *worker) wait() {
if stat == core.CanonStatTy {
events = append(events, core.ChainHeadEvent{Block: block})
}
if work.config.Posv != nil {
// epoch block
if (block.NumberU64() % work.config.Posv.Epoch) == 0 {
core.CheckpointCh <- 1
}
// prepare set of masternodes for the next epoch
if (block.NumberU64() % work.config.Posv.Epoch) == (work.config.Posv.Epoch - work.config.Posv.Gap) {
err := self.chain.UpdateM1()
if err != nil {
if err == core.ErrNotPoSV {
log.Error("Stopping node", "err", err)
os.Exit(1)
} else {
log.Error("Error when update masternodes set. Keep the current masternodes set for the next epoch.", "err", err)
}
}
}
}
self.chain.PostChainEvents(events, logs)

// Insert the block into the set of pending ones to wait for confirmations
Expand Down Expand Up @@ -590,24 +608,6 @@ func (self *worker) commitNewWork() {
log.Info("Commit new mining work", "number", work.Block.Number(), "txs", work.tcount, "special txs", len(specialTxs), "uncles", len(uncles), "elapsed", common.PrettyDuration(time.Since(tstart)))
self.unconfirmed.Shift(work.Block.NumberU64() - 1)
}
if work.config.Posv != nil {
// epoch block
if (work.Block.NumberU64() % work.config.Posv.Epoch) == 0 {
core.CheckpointCh <- 1
}
// prepare set of masternodes for the next epoch
if (work.Block.NumberU64() % work.config.Posv.Epoch) == (work.config.Posv.Epoch - work.config.Posv.Gap) {
err := self.chain.UpdateM1()
if err != nil {
if err == core.ErrNotPoSV {
log.Error("Stopping node", "err", err)
os.Exit(1)
} else {
log.Error("Error when update masternodes set. Keep the current masternodes set for the next epoch.", "err", err)
}
}
}
}
self.push(work)
}

Expand Down

0 comments on commit 217e821

Please sign in to comment.