diff --git a/beacon-chain/builder/metric.go b/beacon-chain/builder/metric.go index ec2fd5771e..74499c8d98 100644 --- a/beacon-chain/builder/metric.go +++ b/beacon-chain/builder/metric.go @@ -20,13 +20,6 @@ var ( Buckets: []float64{1, 2, 5, 10, 20, 50, 100, 200, 500, 1000}, }, ) - getStatusLatency = promauto.NewHistogram( - prometheus.HistogramOpts{ - Name: "get_status_latency_milliseconds", - Help: "Captures RPC latency for get status in milliseconds", - Buckets: []float64{1, 2, 5, 10, 20, 50, 100, 200, 500, 1000}, - }, - ) registerValidatorLatency = promauto.NewHistogram( prometheus.HistogramOpts{ Name: "register_validator_latency_milliseconds", diff --git a/beacon-chain/builder/service.go b/beacon-chain/builder/service.go index dc42b59673..fe32bade5a 100644 --- a/beacon-chain/builder/service.go +++ b/beacon-chain/builder/service.go @@ -72,7 +72,9 @@ func NewService(ctx context.Context, opts ...Option) (*Service, error) { } // Start initializes the service. -func (*Service) Start() {} +func (s *Service) Start() { + go s.pollRelayerStatus(s.ctx) +} // Stop halts the service. func (*Service) Stop() error { @@ -105,19 +107,12 @@ func (s *Service) GetHeader(ctx context.Context, slot types.Slot, parentHash [32 // Status retrieves the status of the builder relay network. func (s *Service) Status() error { - ctx, span := trace.StartSpan(context.Background(), "builder.Status") - defer span.End() - start := time.Now() - defer func() { - getStatusLatency.Observe(float64(time.Since(start).Milliseconds())) - }() - // Return early if builder isn't initialized in service. if s.c == nil { return nil } - return s.c.Status(ctx) + return nil } // RegisterValidator registers a validator with the builder relay network. @@ -157,3 +152,20 @@ func (s *Service) RegisterValidator(ctx context.Context, reg []*ethpb.SignedVali func (s *Service) Configured() bool { return s.c != nil && !reflect.ValueOf(s.c).IsNil() } + +func (s *Service) pollRelayerStatus(ctx context.Context) { + ticker := time.NewTicker(time.Minute) + defer ticker.Stop() + for { + select { + case <-ticker.C: + if s.c != nil { + if err := s.c.Status(ctx); err != nil { + log.WithError(err).Error("Failed to call relayer status endpoint, perhaps mev-boost or relayers are down") + } + } + case <-ctx.Done(): + return + } + } +}