Skip to content

Commit d4849af

Browse files
committed
misc(exporter): add retries when migrating legacy balances
1 parent 8fb00ec commit d4849af

File tree

1 file changed

+32
-17
lines changed

1 file changed

+32
-17
lines changed

backend/cmd/misc/commands/migrate_legacy_balances.go

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package commands
33
import (
44
"flag"
55
"fmt"
6+
"time"
67

78
"github.com/gobitfly/beaconchain/cmd/misc/misctypes"
89
"github.com/gobitfly/beaconchain/pkg/commons/db"
@@ -42,25 +43,39 @@ func (s *MigrateLegacyBalancesCommand) Run(clClient *rpc.LighthouseClient) error
4243
log.Infof("command: migrate-legacy-balances start-epoch=%d end-epoch=%d", s.Config.StartEpoch, s.Config.EndEpoch)
4344

4445
for epoch := s.Config.StartEpoch; epoch <= s.Config.EndEpoch; epoch++ {
45-
state, err := clClient.GetValidatorState(epoch)
46-
if err != nil {
47-
log.Error(err, fmt.Sprintf("error getting balances for epoch %d: %v", epoch, err), 0)
48-
continue
49-
}
46+
for attempt := 1; attempt <= 5; attempt++ {
47+
state, err := clClient.GetValidatorState(epoch)
48+
if err != nil {
49+
log.Error(err, fmt.Sprintf("error getting balances for epoch %d (attempt %d/5): %v", epoch, attempt, err), 0)
50+
if attempt == 5 {
51+
return fmt.Errorf("failed to get balances for epoch %d after %d attempts: %w", epoch, attempt, err)
52+
}
53+
time.Sleep(5 * time.Second)
54+
continue
55+
}
5056

51-
validators := make([]*types.Validator, 0, len(state.Data))
52-
for _, validator := range state.Data {
53-
validators = append(validators, &types.Validator{
54-
Index: validator.Index,
55-
Balance: validator.Balance,
56-
EffectiveBalance: validator.Validator.EffectiveBalance,
57-
})
58-
}
57+
validators := make([]*types.Validator, 0, len(state.Data))
58+
for _, validator := range state.Data {
59+
validators = append(validators, &types.Validator{
60+
Index: validator.Index,
61+
Balance: validator.Balance,
62+
EffectiveBalance: validator.Validator.EffectiveBalance,
63+
})
64+
}
65+
66+
log.Infof("writing epoch %d to clickhouse with %d validators", epoch, len(state.Data))
67+
err = db.SaveLegacyValidatorBalancesToClickhouse(epoch, validators)
68+
if err != nil {
69+
log.Error(err, fmt.Sprintf("error saving legacy balances for epoch %d (attempt %d/5): %v", epoch, attempt, err), 0)
70+
if attempt == 5 {
71+
return fmt.Errorf("error saving legacy balances for epoch %d after %d attempts: %w", epoch, attempt, err)
72+
}
73+
time.Sleep(5 * time.Second)
74+
continue
75+
}
5976

60-
log.Infof("writing epoch %d to clickhouse with %d validators", epoch, len(state.Data))
61-
err = db.SaveLegacyValidatorBalancesToClickhouse(epoch, validators)
62-
if err != nil {
63-
return fmt.Errorf("error saving legacy balances for epoch %d: %w", epoch, err)
77+
// success for this epoch
78+
break
6479
}
6580
}
6681
return nil

0 commit comments

Comments
 (0)