diff --git a/ocis-pkg/handlers/checker.go b/ocis-pkg/handlers/checker.go index 29df6177e3..e0ec1545d2 100644 --- a/ocis-pkg/handlers/checker.go +++ b/ocis-pkg/handlers/checker.go @@ -5,7 +5,6 @@ import ( "fmt" "io" "maps" - "net" "net/http" "golang.org/x/sync/errgroup" @@ -92,7 +91,7 @@ func (h *CheckHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { g.SetLimit(h.conf.limit) for name, check := range h.conf.checks { - g.Go(func() error { + g.Go(func() error { // https://go.dev/blog/loopvar-preview per iteration scope since go 1.22 if err := check(ctx); err != nil { // since go 1.22 for loops have a per-iteration scope instead of per-loop scope, no need to pin the check... return fmt.Errorf("'%s': %w", name, err) } @@ -114,16 +113,3 @@ func (h *CheckHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { h.conf.logger.Panic().Err(err).Msg("failed to write response") } } - -// NewTCPCheck returns a check that connects to a given tcp endpoint. -func NewTCPCheck(address string) func(ctx context.Context) error { - return func(ctx context.Context) error { - conn, err := net.Dial("tcp", address) - if err != nil { - return err - } - defer conn.Close() - - return nil - } -} diff --git a/ocis-pkg/handlers/checknats.go b/ocis-pkg/handlers/checknats.go new file mode 100644 index 0000000000..a8144cb4b9 --- /dev/null +++ b/ocis-pkg/handlers/checknats.go @@ -0,0 +1,23 @@ +package handlers + +import ( + "context" + "fmt" + + "github.com/nats-io/nats.go" +) + +// NewNatsCheck checks the reachability of a nats server. +func NewNatsCheck(natsCluster string, options ...nats.Option) func(context.Context) error { + return func(ctx context.Context) error { + n, err := nats.Connect(natsCluster, options...) + if err != nil { + return fmt.Errorf("could not connect to nats server: %v", err) + } + defer n.Close() + if n.Status() != nats.CONNECTED { + return fmt.Errorf("nats server not connected") + } + return nil + } +} diff --git a/ocis-pkg/handlers/checktcp.go b/ocis-pkg/handlers/checktcp.go new file mode 100644 index 0000000000..90308988cb --- /dev/null +++ b/ocis-pkg/handlers/checktcp.go @@ -0,0 +1,23 @@ +package handlers + +import ( + "context" + "net" +) + +// NewTCPCheck returns a check that connects to a given tcp endpoint. +func NewTCPCheck(address string) func(ctx context.Context) error { + return func(ctx context.Context) error { + conn, err := net.Dial("tcp", address) + if err != nil { + return err + } + + err = conn.Close() + if err != nil { + return err + } + + return nil + } +}