From b2b6bec215edaaa0d7eb7d92bdc5cc15021e9fb2 Mon Sep 17 00:00:00 2001 From: cam-schultz Date: Fri, 2 Feb 2024 19:55:26 +0000 Subject: [PATCH] message relayer metrics error checking --- main/main.go | 9 ++++++++- relayer/message_relayer_metrics.go | 20 +++++++++++++++++--- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/main/main.go b/main/main.go index 5ed5e99a..b42d0c06 100644 --- a/main/main.go +++ b/main/main.go @@ -147,7 +147,14 @@ func main() { startMetricsServer(logger, gatherer, defaultMetricsPort) - metrics := relayer.NewMessageRelayerMetrics(registerer) + metrics, err := relayer.NewMessageRelayerMetrics(registerer) + if err != nil { + logger.Error( + "Failed to create message relayer metrics", + zap.Error(err), + ) + panic(err) + } // Initialize message creator passed down to relayers for creating app requests. messageCreator, err := message.NewCreator(logger, registerer, "message_creator", constants.DefaultNetworkCompressionType, constants.DefaultNetworkMaximumInboundTimeout) diff --git a/relayer/message_relayer_metrics.go b/relayer/message_relayer_metrics.go index 93a6fb89..1ceb61d7 100644 --- a/relayer/message_relayer_metrics.go +++ b/relayer/message_relayer_metrics.go @@ -3,7 +3,15 @@ package relayer -import "github.com/prometheus/client_golang/prometheus" +import ( + "errors" + + "github.com/prometheus/client_golang/prometheus" +) + +var ( + ErrFailedToCreateMessageRelayerMetrics = errors.New("failed to create message relayer metrics") +) type MessageRelayerMetrics struct { successfulRelayMessageCount *prometheus.CounterVec @@ -11,7 +19,7 @@ type MessageRelayerMetrics struct { failedRelayMessageCount *prometheus.CounterVec } -func NewMessageRelayerMetrics(registerer prometheus.Registerer) *MessageRelayerMetrics { +func NewMessageRelayerMetrics(registerer prometheus.Registerer) (*MessageRelayerMetrics, error) { successfulRelayMessageCount := prometheus.NewCounterVec( prometheus.CounterOpts{ Name: "successful_relay_message_count", @@ -28,6 +36,9 @@ func NewMessageRelayerMetrics(registerer prometheus.Registerer) *MessageRelayerM }, []string{"destination_chain_id", "source_chain_id", "source_subnet_id"}, ) + if createSignedMessageLatencyMS == nil { + return nil, ErrFailedToCreateMessageRelayerMetrics + } registerer.MustRegister(createSignedMessageLatencyMS) failedRelayMessageCount := prometheus.NewCounterVec( @@ -37,11 +48,14 @@ func NewMessageRelayerMetrics(registerer prometheus.Registerer) *MessageRelayerM }, []string{"destination_chain_id", "source_chain_id", "source_subnet_id", "failure_reason"}, ) + if failedRelayMessageCount == nil { + return nil, ErrFailedToCreateMessageRelayerMetrics + } registerer.MustRegister(failedRelayMessageCount) return &MessageRelayerMetrics{ successfulRelayMessageCount: successfulRelayMessageCount, createSignedMessageLatencyMS: createSignedMessageLatencyMS, failedRelayMessageCount: failedRelayMessageCount, - } + }, nil }