diff --git a/coordinator/coordinator.go b/coordinator/coordinator.go index 5263713..8334858 100644 --- a/coordinator/coordinator.go +++ b/coordinator/coordinator.go @@ -383,11 +383,23 @@ func (c *Coordinator) syncStats(ctx context.Context, stats *synchronizer.Stats) fromBatch.ForgerAddr = c.cfg.ForgerAddress fromBatch.StateRoot = big.NewInt(0) } + // Before starting the pipeline make sure we reset any + // l2tx from the pool that was forged in a batch that + // didn't end up being mined. We are already doing + // this in handleStopPipeline, but we do it again as a + // failsafe in case the last synced batchnum is + // different than in the previous call to l2DB.Reorg, + // or in case the node was restarted when there was a + // started batch that included l2txs but was not mined. + if err := c.l2DB.Reorg(fromBatch.BatchNum); err != nil { + return tracerr.Wrap(err) + } var err error if c.pipeline, err = c.newPipeline(ctx); err != nil { return tracerr.Wrap(err) } c.pipelineFromBatch = fromBatch + // Start the pipeline if err := c.pipeline.Start(fromBatch.BatchNum, stats, &c.vars); err != nil { c.pipeline = nil return tracerr.Wrap(err)