diff options
-rw-r--r-- | cmd/praefect/main.go | 2 | ||||
-rw-r--r-- | internal/praefect/service/checks.go | 19 |
2 files changed, 16 insertions, 5 deletions
diff --git a/cmd/praefect/main.go b/cmd/praefect/main.go index 078db25df..daed37853 100644 --- a/cmd/praefect/main.go +++ b/cmd/praefect/main.go @@ -436,7 +436,7 @@ func run( protoregistry.GitalyProtoPreregistered, nodeSet.Connections(), primaryGetter, - service.AllChecks(), + service.ReadinessChecks(), ) ) metricsCollectors = append(metricsCollectors, transactionManager, coordinator, repl) diff --git a/internal/praefect/service/checks.go b/internal/praefect/service/checks.go index 9bf5e7bb0..37f51256c 100644 --- a/internal/praefect/service/checks.go +++ b/internal/praefect/service/checks.go @@ -38,9 +38,10 @@ const ( Fatal = "fatal" ) -// Check is a struct representing a check on the health of a Gitaly cluster's setup. These are separate from the "healthcheck" -// concept which is more concerned with the health of the praefect service. These checks are meant to diagnose any issues with -// the praefect cluster setup itself and will be run on startup/restarts. +// Check represents a check to be performed to validate Gitaly cluster health. +// Checks are used to diagnose issues with Praefect cluster setup through the +// Praefect CLI `check` subcommand and also performed through the invoking of +// the readiness RPC. type Check struct { Run func(ctx context.Context) error Name string @@ -62,6 +63,16 @@ func AllChecks() []CheckFunc { } } +// ReadinessChecks returns the checks invoked by the Praefect readiness RPC. +func ReadinessChecks() []CheckFunc { + return []CheckFunc{ + NewPraefectMigrationCheck, + NewGitalyNodeConnectivityCheck, + NewPostgresReadWriteCheck, + NewUnavailableReposCheck, + } +} + // NewPraefectMigrationCheck returns a Check that checks if all praefect migrations have run func NewPraefectMigrationCheck(conf config.Config, w io.Writer, quiet bool) *Check { return &Check{ @@ -204,7 +215,7 @@ func NewUnavailableReposCheck(conf config.Config, w io.Writer, quiet bool) *Chec } // NewClockSyncCheck returns a function that returns a check that verifies if system clock is in sync. -func NewClockSyncCheck(clockDriftCheck func(ntpHost string, driftThreshold time.Duration) (bool, error)) func(_ config.Config, _ io.Writer, _ bool) *Check { +func NewClockSyncCheck(clockDriftCheck func(ntpHost string, driftThreshold time.Duration) (bool, error)) CheckFunc { return func(conf config.Config, w io.Writer, quite bool) *Check { return &Check{ Name: "clock synchronization", |