mirror of
https://github.com/yusing/godoxy.git
synced 2025-06-07 03:52:34 +02:00
tweak(healthcheck): allow custom base context
This commit is contained in:
parent
e82480a639
commit
45e34d691a
2 changed files with 11 additions and 3 deletions
|
@ -1,6 +1,7 @@
|
||||||
package health
|
package health
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/yusing/go-proxy/internal/common"
|
"github.com/yusing/go-proxy/internal/common"
|
||||||
|
@ -12,6 +13,8 @@ type HealthCheckConfig struct {
|
||||||
UseGet bool `json:"use_get,omitempty"`
|
UseGet bool `json:"use_get,omitempty"`
|
||||||
Interval time.Duration `json:"interval" validate:"omitempty,min=1s"`
|
Interval time.Duration `json:"interval" validate:"omitempty,min=1s"`
|
||||||
Timeout time.Duration `json:"timeout" validate:"omitempty,min=1s"`
|
Timeout time.Duration `json:"timeout" validate:"omitempty,min=1s"`
|
||||||
|
|
||||||
|
BaseContext func() context.Context `json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func DefaultHealthConfig() *HealthCheckConfig {
|
func DefaultHealthConfig() *HealthCheckConfig {
|
||||||
|
|
|
@ -87,10 +87,15 @@ func newMonitor(u *url.URL, config *health.HealthCheckConfig, healthCheckFunc He
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mon *monitor) ContextWithTimeout(cause string) (ctx context.Context, cancel context.CancelFunc) {
|
func (mon *monitor) ContextWithTimeout(cause string) (ctx context.Context, cancel context.CancelFunc) {
|
||||||
if mon.task != nil {
|
switch {
|
||||||
return context.WithTimeoutCause(mon.task.Context(), mon.config.Timeout, errors.New(cause))
|
case mon.config.BaseContext != nil:
|
||||||
|
ctx = mon.config.BaseContext()
|
||||||
|
case mon.task != nil:
|
||||||
|
ctx = mon.task.Context()
|
||||||
|
default:
|
||||||
|
ctx = context.Background()
|
||||||
}
|
}
|
||||||
return context.WithTimeoutCause(context.Background(), mon.config.Timeout, errors.New(cause))
|
return context.WithTimeoutCause(ctx, mon.config.Timeout, errors.New(cause))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start implements task.TaskStarter.
|
// Start implements task.TaskStarter.
|
||||||
|
|
Loading…
Add table
Reference in a new issue