Skip to content

Commit 88f4498

Browse files
committed
feat: improve error handling and small refactorings
1 parent e33366e commit 88f4498

File tree

2 files changed

+24
-35
lines changed

2 files changed

+24
-35
lines changed

pkg/node/node.go

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -803,29 +803,28 @@ func NewBee(
803803
)
804804

805805
if !o.Resync && !batchStoreExists && (networkID == mainnetNetworkID) {
806-
chainBackend, err := NewSnapshotBlockHeightContractFilterer(logger)
806+
chainBackend, err := NewSnapshotLogFilterer(logger)
807807
if err != nil {
808808
logger.Debug("failed to initialize batch snapshot chain backend", "error", err)
809809
} else {
810810
eventListener := listener.New(b.syncingStopped, logger, chainBackend, postageStampContractAddress, postageStampContractABI, o.BlockTime, postageSyncingStallingTimeout, postageSyncingBackoffTimeout)
811811

812812
batchSvc, err := batchservice.New(stateStore, batchStore, logger, eventListener, overlayEthAddress.Bytes(), post, sha3.New256, o.Resync)
813813
if err != nil {
814-
return nil, fmt.Errorf("init batch service: %w", err)
815-
}
816-
817-
err = batchSvc.Start(ctx, postageSyncStart, initBatchState)
818-
syncStatus.Store(true)
819-
if err != nil {
820-
syncErr.Store(err)
821-
return nil, fmt.Errorf("unable to start batch service: %w", err)
814+
logger.Error(err, "failed to initialize batch service from snapshot, continuing outside snapshot block...")
815+
} else {
816+
err = batchSvc.Start(ctx, postageSyncStart, initBatchState)
817+
syncStatus.Store(true)
818+
if err != nil {
819+
syncErr.Store(err)
820+
logger.Error(err, "failed to start batch service from snapshot, continuing outside snapshot block...")
821+
} else {
822+
postageSyncStart = chainBackend.maxBlockHeight
823+
}
822824
}
823-
824-
if err := eventListener.Close(); err != nil {
825-
return nil, err
825+
if errClose := eventListener.Close(); errClose != nil {
826+
logger.Error(errClose, "failed to close event listener (snapshot) failure")
826827
}
827-
828-
postageSyncStart = chainBackend.maxBlockHeight
829828
}
830829
}
831830

pkg/node/snapshot.go

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,23 @@ import (
1313
"fmt"
1414
"io"
1515

16+
"slices"
17+
1618
"github.com/ethereum/go-ethereum"
1719
"github.com/ethereum/go-ethereum/core/types"
1820
archive "github.com/ethersphere/batch-archive"
1921
"github.com/ethersphere/bee/v2/pkg/log"
2022
)
2123

22-
type SnapshotBlockHeightContractFilterer struct {
24+
type SnapshotLogFilterer struct {
2325
logger log.Logger
2426
loadedLogs []types.Log
2527
maxBlockHeight uint64
2628
isLoaded bool
2729
}
2830

29-
func NewSnapshotBlockHeightContractFilterer(logger log.Logger) (*SnapshotBlockHeightContractFilterer, error) {
30-
f := &SnapshotBlockHeightContractFilterer{
31+
func NewSnapshotLogFilterer(logger log.Logger) (*SnapshotLogFilterer, error) {
32+
f := &SnapshotLogFilterer{
3133
logger: logger,
3234
}
3335

@@ -38,7 +40,7 @@ func NewSnapshotBlockHeightContractFilterer(logger log.Logger) (*SnapshotBlockHe
3840
return f, nil
3941
}
4042

41-
func (f *SnapshotBlockHeightContractFilterer) loadAndProcessSnapshot() error {
43+
func (f *SnapshotLogFilterer) loadAndProcessSnapshot() error {
4244
f.logger.Info("loading batch snapshot during construction")
4345
data := archive.GetBatchSnapshot(true)
4446

@@ -60,7 +62,7 @@ func (f *SnapshotBlockHeightContractFilterer) loadAndProcessSnapshot() error {
6062
return nil
6163
}
6264

63-
func (f *SnapshotBlockHeightContractFilterer) parseLogs(reader io.Reader) error {
65+
func (f *SnapshotLogFilterer) parseLogs(reader io.Reader) error {
6466
var parsedLogs []types.Log
6567
var currentMaxBlockHeight uint64
6668
scanner := bufio.NewScanner(reader)
@@ -93,7 +95,7 @@ func (f *SnapshotBlockHeightContractFilterer) parseLogs(reader io.Reader) error
9395
return nil
9496
}
9597

96-
func (f *SnapshotBlockHeightContractFilterer) FilterLogs(ctx context.Context, query ethereum.FilterQuery) ([]types.Log, error) {
98+
func (f *SnapshotLogFilterer) FilterLogs(ctx context.Context, query ethereum.FilterQuery) ([]types.Log, error) {
9799
f.logger.Debug("filtering pre-loaded logs", "total_logs", len(f.loadedLogs), "query", query)
98100

99101
filtered := make([]types.Log, 0, len(f.loadedLogs))
@@ -107,13 +109,7 @@ func (f *SnapshotBlockHeightContractFilterer) FilterLogs(ctx context.Context, qu
107109
}
108110

109111
if len(query.Addresses) > 0 {
110-
addressMatch := false
111-
for _, addr := range query.Addresses {
112-
if log.Address == addr {
113-
addressMatch = true
114-
break
115-
}
116-
}
112+
addressMatch := slices.Contains(query.Addresses, log.Address)
117113
if !addressMatch {
118114
continue
119115
}
@@ -132,13 +128,7 @@ func (f *SnapshotBlockHeightContractFilterer) FilterLogs(ctx context.Context, qu
132128
break
133129
}
134130

135-
hasMatch := false
136-
for _, topic := range query.Topics[i] {
137-
if log.Topics[i] == topic {
138-
hasMatch = true
139-
break
140-
}
141-
}
131+
hasMatch := slices.Contains(query.Topics[i], log.Topics[i])
142132

143133
if !hasMatch {
144134
topicMatch = false
@@ -158,6 +148,6 @@ func (f *SnapshotBlockHeightContractFilterer) FilterLogs(ctx context.Context, qu
158148
return filtered, nil
159149
}
160150

161-
func (f *SnapshotBlockHeightContractFilterer) BlockNumber(_ context.Context) (uint64, error) {
151+
func (f *SnapshotLogFilterer) BlockNumber(_ context.Context) (uint64, error) {
162152
return f.maxBlockHeight, nil
163153
}

0 commit comments

Comments
 (0)