From 280e5e4d827742170826c51b18ee550760cfda56 Mon Sep 17 00:00:00 2001 From: Ian Suvak Date: Mon, 27 Jan 2025 08:31:28 -0500 Subject: [PATCH] pass in healthcheck func instead of accessing network from healthcheck package directly --- .../healthcheck/healthcheck.go | 26 +++---------------- signature-aggregator/main/main.go | 22 +++++++++++++++- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/signature-aggregator/healthcheck/healthcheck.go b/signature-aggregator/healthcheck/healthcheck.go index cda8b95e..14349c81 100644 --- a/signature-aggregator/healthcheck/healthcheck.go +++ b/signature-aggregator/healthcheck/healthcheck.go @@ -2,36 +2,16 @@ package healthcheck import ( "context" - "fmt" - "math/big" "net/http" "github.com/alexliesenfeld/health" - "github.com/ava-labs/avalanchego/utils/constants" - "github.com/ava-labs/icm-services/peers" - "github.com/ava-labs/icm-services/signature-aggregator/aggregator" - "github.com/ava-labs/icm-services/utils" - "github.com/ava-labs/subnet-evm/precompile/contracts/warp" ) -func HandleHealthCheckRequest(network peers.AppRequestNetwork) { +func HandleHealthCheckRequest(checkFunc func(context.Context) error) { healthChecker := health.NewChecker( health.WithCheck(health.Check{ - Name: "signature-aggregator-health", - Check: func(context.Context) error { - connectedValidators, err := network.GetConnectedCanonicalValidators(constants.PrimaryNetworkID) - if err != nil { - return fmt.Errorf("Failed to connect to primary network validators: %w", err) - } - if !utils.CheckStakeWeightExceedsThreshold( - big.NewInt(0).SetUint64(connectedValidators.ConnectedWeight), - connectedValidators.TotalValidatorWeight, - warp.WarpDefaultQuorumNumerator, - ) { - return aggregator.ErrNotEnoughConnectedStake - } - return nil - }, + Name: "signature-aggregator-health", + Check: checkFunc, }), ) diff --git a/signature-aggregator/main/main.go b/signature-aggregator/main/main.go index 17c61360..2ec7505c 100644 --- a/signature-aggregator/main/main.go +++ b/signature-aggregator/main/main.go @@ -4,9 +4,11 @@ package main import ( + "context" "errors" "fmt" "log" + "math/big" "net/http" "os" @@ -19,6 +21,8 @@ import ( "github.com/ava-labs/icm-services/signature-aggregator/config" "github.com/ava-labs/icm-services/signature-aggregator/healthcheck" "github.com/ava-labs/icm-services/signature-aggregator/metrics" + "github.com/ava-labs/icm-services/utils" + "github.com/ava-labs/subnet-evm/precompile/contracts/warp" "github.com/prometheus/client_golang/prometheus" "go.uber.org/zap" ) @@ -139,7 +143,23 @@ func main() { metricsInstance, signatureAggregator, ) - healthcheck.HandleHealthCheckRequest(network) + + network.TrackSubnet(constants.PrimaryNetworkID) + primaryNetworkHealthCheckFunc := func(context.Context) error { + connectedValidators, err := network.GetConnectedCanonicalValidators(constants.PrimaryNetworkID) + if err != nil { + return fmt.Errorf("Failed to connect to primary network validators: %w", err) + } + if !utils.CheckStakeWeightExceedsThreshold( + big.NewInt(0).SetUint64(connectedValidators.ConnectedWeight), + connectedValidators.TotalValidatorWeight, + warp.WarpDefaultQuorumNumerator, + ) { + return aggregator.ErrNotEnoughConnectedStake + } + return nil + } + healthcheck.HandleHealthCheckRequest(primaryNetworkHealthCheckFunc) logger.Info("Initialization complete") err = http.ListenAndServe(fmt.Sprintf(":%d", cfg.APIPort), nil)