@@ -3,6 +3,7 @@ package commands
33import (
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