Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions sequencesender/sequencesender.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (
)

const ten = 10
const batchMultiplier = 5

// EthTxManager represents the eth tx manager interface
type EthTxManager interface {
Expand Down Expand Up @@ -170,6 +171,10 @@ func (s *SequenceSender) batchRetrieval(ctx context.Context) error {
s.logger.Info("context cancelled, stopping batch retrieval")
return ctx.Err()
default:
if s.checkWait() {
<-ticker.C
continue
}
// Try to retrieve batch from RPC
rpcBatch, err := s.rpcClient.GetBatch(currentBatchNumber)
if err != nil {
Expand Down Expand Up @@ -554,3 +559,15 @@ func marginTimeElapsed(l2BlockTimestamp uint64, currentTime uint64, timeMargin i
// Time difference is greater than or equal to timeMargin, no need to wait
return true, 0
}

// check if the sequence sender is needed to be waited
func (s *SequenceSender) checkWait() bool {
s.mutexSequence.Lock()
defer s.mutexSequence.Unlock()

if uint64(len(s.sequenceList)) >= s.cfg.MaxBatchesForL1*batchMultiplier {
s.logger.Infof("Sequence list is full: %d, waiting to sync batch from rpc.", len(s.sequenceList))
return true
}
return false
}
Loading