Skip to content

Commit d679ea3

Browse files
bginswalkah
andauthored
fix: Silence web3 event listener cancellation errors (#456)
* chore: Return nil error when context cancelled The program is over, no need to say anything. * fix: Report only non-nil errors If the error is nil, the channel was closed. * chore: Reorder web3Events.Start params Context is always the first param in Go. * chore: Reorder event channel collection Start params Context is always the first param in Go. * chore: Update with go mod tidy --------- Co-authored-by: James Walker <[email protected]>
1 parent 86a3bc6 commit d679ea3

15 files changed

+60
-67
lines changed

go.mod

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ require (
88
github.com/davecgh/go-spew v1.1.1
99
github.com/ethereum/go-ethereum v1.13.4
1010
github.com/fatih/color v1.15.0
11+
github.com/go-chi/httprate v0.14.1
1112
github.com/go-git/go-git/v5 v5.10.0
1213
github.com/google/uuid v1.6.0
1314
github.com/gorilla/mux v1.8.1
@@ -23,14 +24,19 @@ require (
2324
github.com/multiformats/go-multiaddr v0.13.0
2425
github.com/pkg/errors v0.9.1
2526
github.com/rs/zerolog v1.31.0
27+
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible
28+
github.com/shirou/gopsutil/v4 v4.24.10
2629
github.com/spf13/cobra v1.8.0
2730
github.com/stretchr/testify v1.9.0
2831
github.com/theckman/yacspin v0.13.12
2932
go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux v0.55.0
3033
go.opentelemetry.io/otel v1.32.0
34+
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0
3135
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0
3236
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0
37+
go.opentelemetry.io/otel/metric v1.32.0
3338
go.opentelemetry.io/otel/sdk v1.32.0
39+
go.opentelemetry.io/otel/sdk/metric v1.32.0
3440
go.opentelemetry.io/otel/trace v1.32.0
3541
golang.org/x/crypto v0.28.0
3642
gorgonia.org/cu v0.9.7-0.20240623234718-3cd40db700e9
@@ -69,7 +75,6 @@ require (
6975
github.com/felixge/httpsnoop v1.0.4 // indirect
7076
github.com/fsnotify/fsnotify v1.7.0 // indirect
7177
github.com/ghodss/yaml v1.0.0 // indirect
72-
github.com/go-chi/httprate v0.14.1 // indirect
7378
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
7479
github.com/go-git/go-billy/v5 v5.5.0 // indirect
7580
github.com/go-logr/logr v1.4.2 // indirect
@@ -125,6 +130,7 @@ require (
125130
github.com/libp2p/go-libp2p-routing-helpers v0.7.4 // indirect
126131
github.com/libp2p/go-msgio v0.3.0 // indirect
127132
github.com/libp2p/go-netroute v0.2.1 // indirect
133+
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
128134
github.com/magiconair/properties v1.8.7 // indirect
129135
github.com/mattn/go-colorable v0.1.13 // indirect
130136
github.com/mattn/go-isatty v0.0.20 // indirect
@@ -152,6 +158,7 @@ require (
152158
github.com/pjbgf/sha1cd v0.3.0 // indirect
153159
github.com/pmezard/go-difflib v1.0.0 // indirect
154160
github.com/polydawn/refmt v0.89.0 // indirect
161+
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
155162
github.com/prometheus/client_golang v1.19.1 // indirect
156163
github.com/prometheus/client_model v0.6.1 // indirect
157164
github.com/prometheus/common v0.55.0 // indirect
@@ -160,8 +167,6 @@ require (
160167
github.com/rs/cors v1.10.1 // indirect
161168
github.com/samber/lo v1.46.0 // indirect
162169
github.com/sergi/go-diff v1.3.1 // indirect
163-
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect
164-
github.com/shirou/gopsutil/v4 v4.24.10 // indirect
165170
github.com/skeema/knownhosts v1.2.0 // indirect
166171
github.com/spaolacci/murmur3 v1.1.0 // indirect
167172
github.com/spf13/afero v1.10.0 // indirect
@@ -180,10 +185,6 @@ require (
180185
github.com/xanzy/ssh-agent v0.3.3 // indirect
181186
github.com/yusufpapurcu/wmi v1.2.4 // indirect
182187
go.opencensus.io v0.24.0 // indirect
183-
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0 // indirect
184-
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.32.0 // indirect
185-
go.opentelemetry.io/otel/metric v1.32.0 // indirect
186-
go.opentelemetry.io/otel/sdk/metric v1.32.0 // indirect
187188
go.opentelemetry.io/proto/otlp v1.3.1 // indirect
188189
go.uber.org/atomic v1.11.0 // indirect
189190
go.uber.org/multierr v1.11.0 // indirect

go.sum

Lines changed: 8 additions & 34 deletions
Large diffs are not rendered by default.

pkg/jobcreator/controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ func (controller *JobCreatorController) Start(ctx context.Context, cm *system.Cl
182182
errorChan <- err
183183
return errorChan
184184
}
185-
err = controller.web3Events.Start(controller.web3SDK, ctx, cm)
185+
err = controller.web3Events.Start(ctx, cm, controller.web3SDK)
186186
if err != nil {
187187
errorChan <- err
188188
return errorChan

pkg/jobcreator/onchain_jobcreator.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func (jobCreator *OnChainJobCreator) Start(ctx context.Context, cm *system.Clean
5959
return errorChan
6060
}
6161

62-
err = jobCreator.web3Events.Start(jobCreator.web3SDK, ctx, cm)
62+
err = jobCreator.web3Events.Start(ctx, cm, jobCreator.web3SDK)
6363
if err != nil {
6464
errorChan <- err
6565
return errorChan

pkg/mediator/controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ func (controller *MediatorController) Start(ctx context.Context, cm *system.Clea
138138
return errorChan
139139
}
140140
// activate the web3 event listeners
141-
err = controller.web3Events.Start(controller.web3SDK, ctx, cm)
141+
err = controller.web3Events.Start(ctx, cm, controller.web3SDK)
142142
if err != nil {
143143
errorChan <- err
144144
return errorChan

pkg/resourceprovider/controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ func (controller *ResourceProviderController) Start(ctx context.Context, cm *sys
152152
errorChan <- err
153153
return errorChan
154154
}
155-
err = controller.web3Events.Start(controller.web3SDK, ctx, cm)
155+
err = controller.web3Events.Start(ctx, cm, controller.web3SDK)
156156
if err != nil {
157157
errorChan <- err
158158
return errorChan

pkg/solver/controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func (controller *SolverController) Start(ctx context.Context, cm *system.Cleanu
9393

9494
// activate the web3 event listeners
9595
log.Debug().Msgf("controller.web3Events.Start")
96-
err = controller.web3Events.Start(controller.web3SDK, ctx, cm)
96+
err = controller.web3Events.Start(ctx, cm, controller.web3SDK)
9797
if err != nil {
9898
errorChan <- err
9999
return errorChan

pkg/web3/events.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,15 @@ func NewEventChannels() *EventChannels {
4545
}
4646

4747
func (eventChannels *EventChannels) Start(
48-
sdk *Web3SDK,
4948
ctx context.Context,
5049
cm *system.CleanupManager,
50+
sdk *Web3SDK,
5151
) error {
5252
for _, collection := range eventChannels.collections {
5353
c := collection
5454
go func() {
5555
for {
56-
err := c.Start(sdk, ctx, cm)
56+
err := c.Start(ctx, cm, sdk)
5757
if err != nil {
5858
log.Error().Msgf("error starting listeners: %s reconnect in 2 seconds", err.Error())
5959
}

pkg/web3/events_jobcreator.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ func NewJobCreatorEventChannels() *JobCreatorEventChannels {
2424
}
2525

2626
func (s *JobCreatorEventChannels) Start(
27-
sdk *Web3SDK,
2827
ctx context.Context,
2928
cm *system.CleanupManager,
29+
sdk *Web3SDK,
3030
) error {
3131
blockNumber, err := sdk.getBlockNumber()
3232
if err != nil {
@@ -54,7 +54,7 @@ func (s *JobCreatorEventChannels) Start(
5454
for {
5555
select {
5656
case <-ctx.Done():
57-
return fmt.Errorf("cancel by context")
57+
return nil
5858
case event := <-s.jobAddedChan:
5959
log.Debug().
6060
Str("storage->event", "JobAdded").
@@ -63,7 +63,10 @@ func (s *JobCreatorEventChannels) Start(
6363
go handler(*event)
6464
}
6565
case err := <-jobAddedSub.Err():
66-
return fmt.Errorf("cancel by job JobAdded event subscribe error %w", err)
66+
if err != nil {
67+
return fmt.Errorf("cancel by job JobAdded event subscribe error %w", err)
68+
}
69+
return nil
6770
}
6871
}
6972
}

pkg/web3/events_mediation.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ func NewMediationEventChannels() *MediationEventChannels {
2424
}
2525

2626
func (m *MediationEventChannels) Start(
27-
sdk *Web3SDK,
2827
ctx context.Context,
2928
cm *system.CleanupManager,
29+
sdk *Web3SDK,
3030
) error {
3131
blockNumber, err := sdk.getBlockNumber()
3232
if err != nil {
@@ -54,7 +54,7 @@ func (m *MediationEventChannels) Start(
5454
for {
5555
select {
5656
case <-ctx.Done():
57-
return fmt.Errorf("cancel by context")
57+
return nil
5858
case event := <-m.mediationRequestedChan:
5959
log.Debug().
6060
Str("mediation->event", "MediationRequested").
@@ -63,7 +63,10 @@ func (m *MediationEventChannels) Start(
6363
go handler(*event)
6464
}
6565
case err := <-mediationRequestedSub.Err():
66-
return fmt.Errorf("cancel by mediation MediationRequested event subscribe error %w", err)
66+
if err != nil {
67+
return fmt.Errorf("cancel by mediation MediationRequested event subscribe error %w", err)
68+
}
69+
return nil
6770
}
6871
}
6972
}

pkg/web3/events_payments.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ func NewPaymentEventChannels() *PaymentEventChannels {
2424
}
2525

2626
func (p *PaymentEventChannels) Start(
27-
sdk *Web3SDK,
2827
ctx context.Context,
2928
cm *system.CleanupManager,
29+
sdk *Web3SDK,
3030
) error {
3131
blockNumber, err := sdk.getBlockNumber()
3232
if err != nil {
@@ -54,7 +54,7 @@ func (p *PaymentEventChannels) Start(
5454
for {
5555
select {
5656
case <-ctx.Done():
57-
return fmt.Errorf("cancel by context")
57+
return nil
5858
case event := <-p.paymentChan:
5959
log.Debug().
6060
Str("payments->event", "Payment").
@@ -63,7 +63,10 @@ func (p *PaymentEventChannels) Start(
6363
go handler(*event)
6464
}
6565
case err := <-paymentSub.Err():
66-
return fmt.Errorf("cancel by mediation MediationRequested event subscribe error %w", err)
66+
if err != nil {
67+
return fmt.Errorf("cancel by mediation MediationRequested event subscribe error %w", err)
68+
}
69+
return nil
6770
}
6871
}
6972
}

pkg/web3/events_pow.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ func NewPowEventChannels() *PowEventChannels {
2424
}
2525

2626
func (s *PowEventChannels) Start(
27-
sdk *Web3SDK,
2827
ctx context.Context,
2928
cm *system.CleanupManager,
29+
sdk *Web3SDK,
3030
) error {
3131
blockNumber, err := sdk.getBlockNumber()
3232
if err != nil {
@@ -55,7 +55,7 @@ func (s *PowEventChannels) Start(
5555
for {
5656
select {
5757
case <-ctx.Done():
58-
return fmt.Errorf("cancel by context")
58+
return nil
5959
case event := <-s.newPowRoundChan:
6060
log.Debug().
6161
Str("pow->event", "PowNewPowRound").
@@ -65,7 +65,10 @@ func (s *PowEventChannels) Start(
6565
go handler(*event)
6666
}
6767
case err := <-newPowRoundSub.Err():
68-
return fmt.Errorf("cancel by pow newPowRound event subscribe error %w", err)
68+
if err != nil {
69+
return fmt.Errorf("cancel by pow newPowRound event subscribe error %w", err)
70+
}
71+
return nil
6972
}
7073
}
7174
}

pkg/web3/events_storage.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ func NewStorageEventChannels() *StorageEventChannels {
2424
}
2525

2626
func (s *StorageEventChannels) Start(
27-
sdk *Web3SDK,
2827
ctx context.Context,
2928
cm *system.CleanupManager,
29+
sdk *Web3SDK,
3030
) error {
3131
blockNumber, err := sdk.getBlockNumber()
3232
if err != nil {
@@ -54,7 +54,7 @@ func (s *StorageEventChannels) Start(
5454
for {
5555
select {
5656
case <-ctx.Done():
57-
return fmt.Errorf("cancel by context")
57+
return nil
5858
case event := <-s.dealStateChangeChan:
5959
log.Debug().
6060
Str("storage->event", "DealStateChange").
@@ -63,7 +63,10 @@ func (s *StorageEventChannels) Start(
6363
go handler(*event)
6464
}
6565
case err := <-dealStateChangeSub.Err():
66-
return fmt.Errorf("cancel by storage DealStateChange event subscribe error %w", err)
66+
if err != nil {
67+
return fmt.Errorf("cancel by storage DealStateChange event subscribe error %w", err)
68+
}
69+
return nil
6770
}
6871
}
6972
}

pkg/web3/events_token.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ func NewTokenEventChannels() *TokenEventChannels {
2525
}
2626

2727
func (t *TokenEventChannels) Start(
28-
sdk *Web3SDK,
2928
ctx context.Context,
3029
cm *system.CleanupManager,
30+
sdk *Web3SDK,
3131
) error {
3232
blockNumber, err := sdk.getBlockNumber()
3333
if err != nil {
@@ -57,7 +57,7 @@ func (t *TokenEventChannels) Start(
5757
for {
5858
select {
5959
case <-ctx.Done():
60-
return fmt.Errorf("cancel by context")
60+
return nil
6161
case event := <-t.transferChan:
6262
log.Debug().
6363
Str("token->event", "Transfer").
@@ -66,7 +66,10 @@ func (t *TokenEventChannels) Start(
6666
go handler(*event)
6767
}
6868
case err := <-transferSub.Err():
69-
return fmt.Errorf("cancel by token Transfer event subscribe error %w", err)
69+
if err != nil {
70+
return fmt.Errorf("cancel by token Transfer event subscribe error %w", err)
71+
}
72+
return nil
7073
}
7174
}
7275
}

pkg/web3/types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ type Web3Options struct {
2929

3030
type EventChannelCollection interface {
3131
Start(
32-
sdk *Web3SDK,
3332
ctx context.Context,
3433
cm *system.CleanupManager,
34+
sdk *Web3SDK,
3535
) error
3636
}

0 commit comments

Comments
 (0)