diff --git a/miner/payload_building.go b/miner/payload_building.go index ff124074e5..08c772bacb 100644 --- a/miner/payload_building.go +++ b/miner/payload_building.go @@ -21,7 +21,6 @@ import ( "encoding/binary" "math/big" "sync" - "time" "github.com/ethereum/go-ethereum/beacon/engine" "github.com/ethereum/go-ethereum/common" @@ -84,7 +83,7 @@ func newPayload(empty *types.Block, id engine.PayloadID) *Payload { } // update updates the full-block with latest built version. -func (payload *Payload) update(block *types.Block, fees *big.Int, elapsed time.Duration) { +func (payload *Payload) update(block *types.Block, fees *big.Int) { payload.lock.Lock() defer payload.lock.Unlock() @@ -103,7 +102,7 @@ func (payload *Payload) update(block *types.Block, fees *big.Int, elapsed time.D feesInEther := new(big.Float).Quo(new(big.Float).SetInt(fees), big.NewFloat(params.Ether)) log.Info("Updated payload", "id", payload.id, "number", block.NumberU64(), "hash", block.Hash(), "txs", len(block.Transactions()), "gas", block.GasUsed(), "fees", feesInEther, - "root", block.Root(), "elapsed", common.PrettyDuration(elapsed)) + "root", block.Root()) } payload.cond.Broadcast() // fire signal for notifying full block } @@ -160,34 +159,17 @@ func (w *worker) buildPayload(args *BuildPayloadArgs) (*Payload, error) { if err != nil { return nil, err } - // Construct a payload object for return. + // Construct a payload object for updating the block. payload := newPayload(empty, args.Id()) - // Setup the timer for re-building the payload. The initial clock is kept - // for triggering process immediately. - timer := time.NewTimer(0) - defer timer.Stop() - - // Setup the timer for terminating the process if payload building exceeds 5 seconds. - // This should be much longer than normal payload building should take. - endTimer := time.NewTimer(time.Second * 5) - - // TODO: figure out if timeout case can be removed - for { - select { - case <-timer.C: - start := time.Now() - block, fees, err := w.getSealingBlock(args.Parent, args.Timestamp, args.FeeRecipient, args.Random, args.Withdrawals, false) - if err == nil { - payload.update(block, fees, time.Since(start)) - } - timer.Reset(w.recommit) - case <-payload.stop: - log.Info("Stopping work on payload", "id", payload.id, "reason", "delivery") - return payload, nil - case <-endTimer.C: - log.Info("Stopping work on payload", "id", payload.id, "reason", "timeout") - return payload, nil - } + // Get the block to update with the payload + block, fees, err := w.getSealingBlock(args.Parent, args.Timestamp, args.FeeRecipient, args.Random, args.Withdrawals, false) + if err == nil { + payload.update(block, fees) + log.Info("Stopping work on payload", "id", payload.id, "reason", "delivery") + return payload, nil + } else { + log.Info("Stopping work on payload", "id", payload.id, "reason", "failed to retrieve payload") + return payload, nil } }