Skip to content

Commit 6b9785c

Browse files
committed
Merge remote-tracking branch 'origin/master' into wasmer7
2 parents c29160c + 62fea98 commit 6b9785c

18 files changed

+150
-400
lines changed

arbnode/delayed_seq_reorg_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func TestSequencerReorgFromDelayed(t *testing.T) {
2020
defer cancel()
2121

2222
exec, streamer, db, _ := NewTransactionStreamerForTest(t, ctx, common.Address{})
23-
tracker, err := NewInboxTracker(db, streamer, nil, DefaultSnapSyncConfig)
23+
tracker, err := NewInboxTracker(db, streamer, nil)
2424
Require(t, err)
2525

2626
err = streamer.Start(ctx)
@@ -221,7 +221,7 @@ func TestSequencerReorgFromLastDelayedMsg(t *testing.T) {
221221
defer cancel()
222222

223223
exec, streamer, db, _ := NewTransactionStreamerForTest(t, ctx, common.Address{})
224-
tracker, err := NewInboxTracker(db, streamer, nil, DefaultSnapSyncConfig)
224+
tracker, err := NewInboxTracker(db, streamer, nil)
225225
Require(t, err)
226226

227227
err = streamer.Start(ctx)

arbnode/inbox_reader.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,6 @@ func (r *InboxReader) Start(ctxIn context.Context) error {
149149
return err
150150
}
151151
if batchCount > 0 {
152-
if r.tracker.snapSyncConfig.Enabled {
153-
break
154-
}
155152
// Validate the init message matches our L2 blockchain
156153
ctx, err := r.StopWaiter.GetContextSafe()
157154
if err != nil {

arbnode/inbox_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ func NewTransactionStreamerForTest(t *testing.T, ctx context.Context, ownerAddre
149149
Fail(t, err)
150150
}
151151
execSeq := &execClientWrapper{execEngine, t}
152-
inbox, err := NewTransactionStreamer(ctx, consensusDB, bc.Config(), execSeq, nil, make(chan error, 1), transactionStreamerConfigFetcher, &DefaultSnapSyncConfig)
152+
inbox, err := NewTransactionStreamer(ctx, consensusDB, bc.Config(), execSeq, nil, make(chan error, 1), transactionStreamerConfigFetcher)
153153
if err != nil {
154154
Fail(t, err)
155155
}

arbnode/inbox_tracker.go

Lines changed: 12 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -35,24 +35,22 @@ var (
3535
)
3636

3737
type InboxTracker struct {
38-
db ethdb.Database
39-
txStreamer *TransactionStreamer
40-
mutex sync.Mutex
41-
validator *staker.BlockValidator
42-
dapReaders *daprovider.DAProviderRegistry
43-
snapSyncConfig SnapSyncConfig
38+
db ethdb.Database
39+
txStreamer *TransactionStreamer
40+
mutex sync.Mutex
41+
validator *staker.BlockValidator
42+
dapReaders *daprovider.DAProviderRegistry
4443

4544
batchMetaMutex sync.Mutex
4645
batchMeta *containers.LruCache[uint64, BatchMetadata]
4746
}
4847

49-
func NewInboxTracker(db ethdb.Database, txStreamer *TransactionStreamer, dapReaders *daprovider.DAProviderRegistry, snapSyncConfig SnapSyncConfig) (*InboxTracker, error) {
48+
func NewInboxTracker(db ethdb.Database, txStreamer *TransactionStreamer, dapReaders *daprovider.DAProviderRegistry) (*InboxTracker, error) {
5049
tracker := &InboxTracker{
51-
db: db,
52-
txStreamer: txStreamer,
53-
dapReaders: dapReaders,
54-
batchMeta: containers.NewLruCache[uint64, BatchMetadata](1000),
55-
snapSyncConfig: snapSyncConfig,
50+
db: db,
51+
txStreamer: txStreamer,
52+
dapReaders: dapReaders,
53+
batchMeta: containers.NewLruCache[uint64, BatchMetadata](1000),
5654
}
5755
return tracker, nil
5856
}
@@ -434,37 +432,13 @@ func (t *InboxTracker) GetDelayedMessageBytes(ctx context.Context, seqNum uint64
434432

435433
func (t *InboxTracker) AddDelayedMessages(messages []*DelayedInboxMessage) error {
436434
var nextAcc common.Hash
437-
firstDelayedMsgToKeep := uint64(0)
438435
if len(messages) == 0 {
439436
return nil
440437
}
441438
pos, err := messages[0].Message.Header.SeqNum()
442439
if err != nil {
443440
return err
444441
}
445-
if t.snapSyncConfig.Enabled && pos < t.snapSyncConfig.DelayedCount {
446-
firstDelayedMsgToKeep = t.snapSyncConfig.DelayedCount
447-
if firstDelayedMsgToKeep > 0 {
448-
firstDelayedMsgToKeep--
449-
}
450-
for {
451-
if len(messages) == 0 {
452-
return nil
453-
}
454-
pos, err = messages[0].Message.Header.SeqNum()
455-
if err != nil {
456-
return err
457-
}
458-
if pos+1 == firstDelayedMsgToKeep {
459-
nextAcc = messages[0].AfterInboxAcc()
460-
}
461-
if pos < firstDelayedMsgToKeep {
462-
messages = messages[1:]
463-
} else {
464-
break
465-
}
466-
}
467-
}
468442
t.mutex.Lock()
469443
defer t.mutex.Unlock()
470444

@@ -479,7 +453,7 @@ func (t *InboxTracker) AddDelayedMessages(messages []*DelayedInboxMessage) error
479453
return err
480454
}
481455

482-
if pos > firstDelayedMsgToKeep {
456+
if pos > 0 {
483457
var err error
484458
nextAcc, err = t.GetDelayedAcc(pos - 1)
485459
if err != nil {
@@ -689,42 +663,16 @@ var delayedMessagesMismatch = errors.New("sequencer batch delayed messages missi
689663
func (t *InboxTracker) AddSequencerBatches(ctx context.Context, client *ethclient.Client, batches []*SequencerInboxBatch) error {
690664
var nextAcc common.Hash
691665
var prevbatchmeta BatchMetadata
692-
sequenceNumberToKeep := uint64(0)
693666
if len(batches) == 0 {
694667
return nil
695668
}
696-
if t.snapSyncConfig.Enabled && batches[0].SequenceNumber < t.snapSyncConfig.BatchCount {
697-
sequenceNumberToKeep = t.snapSyncConfig.BatchCount
698-
if sequenceNumberToKeep > 0 {
699-
sequenceNumberToKeep--
700-
}
701-
for {
702-
if len(batches) == 0 {
703-
return nil
704-
}
705-
if batches[0].SequenceNumber+1 == sequenceNumberToKeep {
706-
nextAcc = batches[0].AfterInboxAcc
707-
prevbatchmeta = BatchMetadata{
708-
Accumulator: batches[0].AfterInboxAcc,
709-
DelayedMessageCount: batches[0].AfterDelayedCount,
710-
MessageCount: arbutil.MessageIndex(t.snapSyncConfig.PrevBatchMessageCount),
711-
ParentChainBlock: batches[0].ParentChainBlockNumber,
712-
}
713-
}
714-
if batches[0].SequenceNumber < sequenceNumberToKeep {
715-
batches = batches[1:]
716-
} else {
717-
break
718-
}
719-
}
720-
}
721669
t.mutex.Lock()
722670
defer t.mutex.Unlock()
723671

724672
pos := batches[0].SequenceNumber
725673
startPos := pos
726674

727-
if pos > sequenceNumberToKeep {
675+
if pos > 0 {
728676
var err error
729677
prevbatchmeta, err = t.GetBatchMetadata(pos - 1)
730678
nextAcc = prevbatchmeta.Accumulator

arbnode/node.go

Lines changed: 3 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,6 @@ type Config struct {
8989
RPCServer rpcserver.Config `koanf:"rpc-server"`
9090
ExecutionRPCClient rpcclient.ClientConfig `koanf:"execution-rpc-client" reload:"hot"`
9191
VersionAlerterServer nitroversionalerter.ServerConfig `koanf:"version-alerter-server" reload:"hot"`
92-
// SnapSyncConfig is only used for testing purposes, these should not be configured in production.
93-
SnapSyncTest SnapSyncConfig
9492
}
9593

9694
func (c *Config) Validate() error {
@@ -212,7 +210,6 @@ var ConfigDefault = Config{
212210
Maintenance: DefaultMaintenanceConfig,
213211
ConsensusExecutionSyncer: DefaultConsensusExecutionSyncerConfig,
214212
VersionAlerterServer: nitroversionalerter.DefaultServerConfig,
215-
SnapSyncTest: DefaultSnapSyncConfig,
216213
RPCServer: rpcserver.DefaultConfig,
217214
ExecutionRPCClient: rpcclient.ClientConfig{
218215
URL: "",
@@ -330,24 +327,6 @@ type Node struct {
330327
ConsensusExecutionSyncer *ConsensusExecutionSyncer
331328
}
332329

333-
type SnapSyncConfig struct {
334-
Enabled bool
335-
PrevBatchMessageCount uint64
336-
PrevDelayedRead uint64
337-
BatchCount uint64
338-
DelayedCount uint64
339-
ParentChainAssertionBlock uint64
340-
}
341-
342-
var DefaultSnapSyncConfig = SnapSyncConfig{
343-
Enabled: false,
344-
PrevBatchMessageCount: 0,
345-
PrevDelayedRead: 0,
346-
BatchCount: 0,
347-
DelayedCount: 0,
348-
ParentChainAssertionBlock: 0,
349-
}
350-
351330
type ConfigFetcher interface {
352331
Get() *Config
353332
Start(context.Context)
@@ -743,49 +722,21 @@ func getDAProviders(
743722
}
744723

745724
func getInboxTrackerAndReader(
746-
ctx context.Context,
747725
consensusDB ethdb.Database,
748726
txStreamer *TransactionStreamer,
749727
dapReaders *daprovider.DAProviderRegistry,
750-
config *Config,
751728
configFetcher ConfigFetcher,
752729
l1client *ethclient.Client,
753730
l1Reader *headerreader.HeaderReader,
754731
deployInfo *chaininfo.RollupAddresses,
755732
delayedBridge *DelayedBridge,
756733
sequencerInbox *SequencerInbox,
757-
exec execution.ExecutionSequencer,
758734
) (*InboxTracker, *InboxReader, error) {
759-
inboxTracker, err := NewInboxTracker(consensusDB, txStreamer, dapReaders, config.SnapSyncTest)
735+
inboxTracker, err := NewInboxTracker(consensusDB, txStreamer, dapReaders)
760736
if err != nil {
761737
return nil, nil, err
762738
}
763739
firstMessageBlock := new(big.Int).SetUint64(deployInfo.DeployedAt)
764-
if config.SnapSyncTest.Enabled {
765-
if exec == nil {
766-
return nil, nil, errors.New("snap sync test requires an execution sequencer")
767-
}
768-
769-
batchCount := config.SnapSyncTest.BatchCount
770-
delayedMessageNumber, err := exec.NextDelayedMessageNumber()
771-
if err != nil {
772-
return nil, nil, err
773-
}
774-
if batchCount > delayedMessageNumber {
775-
batchCount = delayedMessageNumber
776-
}
777-
// Find the first block containing the batch count.
778-
// Subtract 1 to get the block before the needed batch count,
779-
// this is done to fetch previous batch metadata needed for snap sync.
780-
if batchCount > 0 {
781-
batchCount--
782-
}
783-
block, err := FindBlockContainingBatchCount(ctx, deployInfo.Bridge, l1client, config.SnapSyncTest.ParentChainAssertionBlock, batchCount)
784-
if err != nil {
785-
return nil, nil, err
786-
}
787-
firstMessageBlock.SetUint64(block)
788-
}
789740
inboxReader, err := NewInboxReader(inboxTracker, l1client, l1Reader, firstMessageBlock, delayedBridge, sequencerInbox, func() *InboxReaderConfig { return &configFetcher.Get().InboxReader })
790741
if err != nil {
791742
return nil, nil, err
@@ -927,7 +878,7 @@ func getTransactionStreamer(
927878
fatalErrChan chan error,
928879
) (*TransactionStreamer, error) {
929880
transactionStreamerConfigFetcher := func() *TransactionStreamerConfig { return &configFetcher.Get().TransactionStreamer }
930-
txStreamer, err := NewTransactionStreamer(ctx, consensusDB, l2Config, exec, broadcastServer, fatalErrChan, transactionStreamerConfigFetcher, &configFetcher.Get().SnapSyncTest)
881+
txStreamer, err := NewTransactionStreamer(ctx, consensusDB, l2Config, exec, broadcastServer, fatalErrChan, transactionStreamerConfigFetcher)
931882
if err != nil {
932883
return nil, err
933884
}
@@ -1224,7 +1175,7 @@ func createNodeImpl(
12241175
return nil, err
12251176
}
12261177

1227-
inboxTracker, inboxReader, err := getInboxTrackerAndReader(ctx, consensusDB, txStreamer, dapRegistry, config, configFetcher, l1client, l1Reader, deployInfo, delayedBridge, sequencerInbox, executionSequencer)
1178+
inboxTracker, inboxReader, err := getInboxTrackerAndReader(consensusDB, txStreamer, dapRegistry, configFetcher, l1client, l1Reader, deployInfo, delayedBridge, sequencerInbox)
12281179
if err != nil {
12291180
return nil, err
12301181
}
@@ -1290,53 +1241,6 @@ func createNodeImpl(
12901241
}, nil
12911242
}
12921243

1293-
func FindBlockContainingBatchCount(ctx context.Context, bridgeAddress common.Address, l1Client *ethclient.Client, parentChainAssertionBlock uint64, batchCount uint64) (uint64, error) {
1294-
bridge, err := bridgegen.NewIBridge(bridgeAddress, l1Client)
1295-
if err != nil {
1296-
return 0, err
1297-
}
1298-
high := parentChainAssertionBlock
1299-
low := uint64(0)
1300-
reduceBy := uint64(100)
1301-
if high > reduceBy {
1302-
low = high - reduceBy
1303-
}
1304-
// Reduce high and low by 100 until lowNode.InboxMaxCount < batchCount
1305-
// This will give us a range (low to high) of blocks that contain the batch count.
1306-
for low > 0 {
1307-
lowCount, err := bridge.SequencerMessageCount(&bind.CallOpts{Context: ctx, BlockNumber: new(big.Int).SetUint64(low)})
1308-
if err != nil {
1309-
return 0, err
1310-
}
1311-
if lowCount.Uint64() > batchCount {
1312-
high = low
1313-
reduceBy = reduceBy * 2
1314-
if low > reduceBy {
1315-
low = low - reduceBy
1316-
} else {
1317-
low = 0
1318-
}
1319-
} else {
1320-
break
1321-
}
1322-
}
1323-
// Then binary search between low and high to find the block containing the batch count.
1324-
for low < high {
1325-
mid := low + (high-low)/2
1326-
1327-
midCount, err := bridge.SequencerMessageCount(&bind.CallOpts{Context: ctx, BlockNumber: new(big.Int).SetUint64(mid)})
1328-
if err != nil {
1329-
return 0, err
1330-
}
1331-
if midCount.Uint64() < batchCount {
1332-
low = mid + 1
1333-
} else {
1334-
high = mid
1335-
}
1336-
}
1337-
return low, nil
1338-
}
1339-
13401244
func (n *Node) OnConfigReload(_ *Config, _ *Config) error {
13411245
// TODO
13421246
return nil

arbnode/transaction_streamer.go

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,9 @@ type TransactionStreamer struct {
5454
prevHeadMsgIdx *arbutil.MessageIndex
5555
validator *staker.BlockValidator
5656

57-
db ethdb.Database
58-
fatalErrChan chan<- error
59-
config TransactionStreamerConfigFetcher
60-
snapSyncConfig *SnapSyncConfig
57+
db ethdb.Database
58+
fatalErrChan chan<- error
59+
config TransactionStreamerConfigFetcher
6160

6261
insertionMutex sync.Mutex // cannot be acquired while reorgMutex is held
6362
reorgMutex sync.RWMutex
@@ -124,7 +123,6 @@ func NewTransactionStreamer(
124123
broadcastServer *broadcaster.Broadcaster,
125124
fatalErrChan chan<- error,
126125
config TransactionStreamerConfigFetcher,
127-
snapSyncConfig *SnapSyncConfig,
128126
) (*TransactionStreamer, error) {
129127
streamer := &TransactionStreamer{
130128
exec: exec,
@@ -134,7 +132,6 @@ func NewTransactionStreamer(
134132
broadcastServer: broadcastServer,
135133
fatalErrChan: fatalErrChan,
136134
config: config,
137-
snapSyncConfig: snapSyncConfig,
138135
}
139136
err := streamer.cleanupInconsistentState()
140137
if err != nil {
@@ -794,9 +791,6 @@ func (s *TransactionStreamer) AddMessagesAndEndBatch(firstMsgIdx arbutil.Message
794791
}
795792

796793
func (s *TransactionStreamer) getPrevPrevDelayedRead(msgIdx arbutil.MessageIndex) (uint64, error) {
797-
if s.snapSyncConfig.Enabled && uint64(msgIdx) == s.snapSyncConfig.PrevBatchMessageCount {
798-
return s.snapSyncConfig.PrevDelayedRead, nil
799-
}
800794
var prevDelayedRead uint64
801795
if msgIdx > 0 {
802796
prevMsg, err := s.GetMessage(msgIdx - 1)

changelog/diegoximenes-nit-4565.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
### Removed
2+
- Remove aborted snap sync code

changelog/jeongkyun-oh-nit-4431.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
### Fixed
2+
- Use defer to release createBlocksMutex in sequencerWrapper to prevent deadlock on panic

changelog/mkulawik-nit-4138.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
### Fixed
2+
- Fix opening classic-msg database

changelog/mkulawik-nit-4530.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
### Fixed
2+
- Fix system test triggered panic in `updateFilterMapsHeads`

0 commit comments

Comments
 (0)