From 716f0adc9532b53a0091e33003dd6b3fbab6ac5d Mon Sep 17 00:00:00 2001 From: yusing Date: Fri, 5 Dec 2025 00:45:24 +0800 Subject: [PATCH] refactor(healthcheck): agent health check --- agent/pkg/handler/check_health.go | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/agent/pkg/handler/check_health.go b/agent/pkg/handler/check_health.go index ec193cda..16f82a15 100644 --- a/agent/pkg/handler/check_health.go +++ b/agent/pkg/handler/check_health.go @@ -1,6 +1,7 @@ package handler import ( + "context" "fmt" "net/http" "net/url" @@ -12,8 +13,6 @@ import ( "github.com/yusing/godoxy/internal/watcher/health/monitor" ) -var defaultHealthConfig = types.DefaultHealthConfig() - func CheckHealth(w http.ResponseWriter, r *http.Request) { query := r.URL.Query() scheme := query.Get("scheme") @@ -49,7 +48,7 @@ func CheckHealth(w http.ResponseWriter, r *http.Request) { Scheme: scheme, Host: host, Path: path, - }, defaultHealthConfig).CheckHealth() + }, healthCheckConfigFromRequest(r)).CheckHealth() case "tcp", "udp": host := query.Get("host") if host == "" { @@ -68,7 +67,7 @@ func CheckHealth(w http.ResponseWriter, r *http.Request) { result, err = monitor.NewRawHealthMonitor(&url.URL{ Scheme: scheme, Host: host, - }, defaultHealthConfig).CheckHealth() + }, healthCheckConfigFromRequest(r)).CheckHealth() } if err != nil { @@ -80,3 +79,13 @@ func CheckHealth(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) sonic.ConfigDefault.NewEncoder(w).Encode(result) } + +func healthCheckConfigFromRequest(r *http.Request) types.HealthCheckConfig { + // we only need timeout and base context because it's one shot request + return types.HealthCheckConfig{ + Timeout: types.HealthCheckTimeoutDefault, + BaseContext: func() context.Context { + return r.Context() + }, + } +}