Skip to content

Commit 8232ee3

Browse files
committed
fix: resub infinite loop
1 parent 8869c63 commit 8232ee3

1 file changed

Lines changed: 18 additions & 6 deletions

File tree

core/chainio/avs_subscriber.go

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88

99
"github.com/ethereum/go-ethereum/accounts/abi/bind"
1010
ethcommon "github.com/ethereum/go-ethereum/common"
11+
"github.com/ethereum/go-ethereum/event"
1112

1213
"github.com/ethereum/go-ethereum/core/types"
1314
servicemanager "github.com/yetanotherco/aligned_layer/contracts/bindings/AlignedLayerServiceManager"
@@ -116,23 +117,28 @@ func (s *AvsSubscriber) SubscribeToNewTasksV2(newTaskCreatedChan chan *servicema
116117
// Handle errors and resubscribe
117118
go func() {
118119
var err1, err2 error
119-
for err1 == nil || err2 == nil {
120+
var auxSub, auxSubFallback event.Subscription
121+
for err1 == nil || err2 == nil { //while one is active
120122
select {
121123
case err := <-sub.Err():
122124
s.logger.Warn("Error in new task subscription", "err", err)
125+
s.logger.Info("failed states:", "err1", err1, "err2", err2)
123126

124-
auxSub, err1 := SubscribeToNewTasksV2Retryable(&bind.WatchOpts{}, s.AvsContractBindings.ServiceManager, internalChannel, nil, retry.NetworkRetryParams())
127+
auxSub, err1 = SubscribeToNewTasksV2Retryable(&bind.WatchOpts{}, s.AvsContractBindings.ServiceManager, internalChannel, nil, retry.NetworkRetryParams())
125128
if err1 == nil {
126129
//sub.Unsubscribe()
127130
sub = auxSub // update the subscription only if it was successful
131+
s.logger.Info("Resubscribed to fallback new task subscription")
128132
}
129133
case err := <-subFallback.Err():
134+
s.logger.Info("failed states:", "err1", err1, "err2", err2)
130135
s.logger.Warn("Error in fallback new task subscription", "err", err)
131136

132-
auxSubFallback, err2 := SubscribeToNewTasksV2Retryable(&bind.WatchOpts{}, s.AvsContractBindings.ServiceManagerFallback, internalChannel, nil, retry.NetworkRetryParams())
137+
auxSubFallback, err2 = SubscribeToNewTasksV2Retryable(&bind.WatchOpts{}, s.AvsContractBindings.ServiceManagerFallback, internalChannel, nil, retry.NetworkRetryParams())
133138
if err2 == nil {
134139
//subFallback.Unsubscribe()
135140
subFallback = auxSubFallback // update the subscription only if it was successful
141+
s.logger.Info("Resubscribed to fallback new task subscription")
136142
}
137143
}
138144
}
@@ -197,24 +203,30 @@ func (s *AvsSubscriber) SubscribeToNewTasksV3(newTaskCreatedChan chan *servicema
197203

198204
// Handle errors and resubscribe
199205
go func() {
206+
s.logger.Info("Starting error handling goroutine")
200207
var err1, err2 error
201-
for err1 == nil || err2 == nil {
208+
var auxSub, auxSubFallback event.Subscription
209+
for err1 == nil || err2 == nil { //while one is active
202210
select {
203211
case err := <-sub.Err():
204212
s.logger.Warn("Error in new task subscription", "err", err)
213+
s.logger.Info("failed states:", "err1", err1, "err2", err2)
205214

206-
auxSub, err1 := SubscribeToNewTasksV3Retryable(&bind.WatchOpts{}, s.AvsContractBindings.ServiceManager, internalChannel, nil, retry.NetworkRetryParams())
215+
auxSub, err1 = SubscribeToNewTasksV3Retryable(&bind.WatchOpts{}, s.AvsContractBindings.ServiceManager, internalChannel, nil, retry.NetworkRetryParams())
207216
if err1 == nil {
208217
//sub.Unsubscribe()
209218
sub = auxSub // update the subscription only if it was successful
219+
s.logger.Info("Resubscribed to fallback new task subscription")
210220
}
211221
case err := <-subFallback.Err():
212222
s.logger.Warn("Error in fallback new task subscription", "err", err)
223+
s.logger.Info("failed states:", "err1", err1, "err2", err2)
213224

214-
auxSubFallback, err2 := SubscribeToNewTasksV3Retryable(&bind.WatchOpts{}, s.AvsContractBindings.ServiceManagerFallback, internalChannel, nil, retry.NetworkRetryParams())
225+
auxSubFallback, err2 = SubscribeToNewTasksV3Retryable(&bind.WatchOpts{}, s.AvsContractBindings.ServiceManagerFallback, internalChannel, nil, retry.NetworkRetryParams())
215226
if err2 == nil {
216227
//subFallback.Unsubscribe()
217228
subFallback = auxSubFallback // update the subscription only if it was successful
229+
s.logger.Info("Resubscribed to fallback new task subscription")
218230
}
219231
}
220232
}

0 commit comments

Comments
 (0)