miner: don't mine on the same base twice

This commit is contained in:
Łukasz Magiera 2019-10-10 02:38:39 +02:00
parent 3fd2f3da7a
commit 30d7a714a9
2 changed files with 9 additions and 1 deletions

View File

@ -103,7 +103,7 @@ func (syncer *Syncer) InformNewHead(from peer.ID, fts *store.FullTipSet) {
log.Info("got block from ourselves")
if err := syncer.Sync(fts.TipSet()); err != nil {
log.Errorf("failed to sync our own block: %+v", err)
log.Errorf("failed to sync our own block %s: %+v", fts.TipSet().Cids(), err)
}
return

View File

@ -131,6 +131,8 @@ func (m *Miner) mine(ctx context.Context) {
ctx, span := trace.StartSpan(ctx, "/mine")
defer span.End()
var lastBase *types.TipSet
for {
select {
case <-m.stop:
@ -157,6 +159,12 @@ func (m *Miner) mine(ctx context.Context) {
log.Errorf("failed to get best mining candidate: %s", err)
continue
}
if base.ts.Equals(lastBase) {
log.Error("BestMiningCandidate from the previous round: %s", lastBase.Cids())
time.Sleep(build.BlockDelay)
continue
}
lastBase = base.ts
b, err := m.mineOne(ctx, base)
if err != nil {