From a54f6942ba080265b920a328ccf55b9a6fbbeb6b Mon Sep 17 00:00:00 2001 From: yusing Date: Wed, 17 Dec 2025 10:22:09 +0800 Subject: [PATCH] feat(idlewatcher): add option to disable loading page --- internal/docker/container.go | 15 ++++++++------- internal/docker/labels.go | 1 + internal/idlewatcher/handle_http.go | 2 +- internal/types/idlewatcher.go | 1 + 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/internal/docker/container.go b/internal/docker/container.go index 6c7fe2ca..fb8dc7c1 100644 --- a/internal/docker/container.go +++ b/internal/docker/container.go @@ -238,13 +238,14 @@ func setPrivateHostname(c *types.Container, helper containerHelper) { func loadDeleteIdlewatcherLabels(c *types.Container, helper containerHelper) { cfg := map[string]any{ - "idle_timeout": helper.getDeleteLabel(LabelIdleTimeout), - "wake_timeout": helper.getDeleteLabel(LabelWakeTimeout), - "stop_method": helper.getDeleteLabel(LabelStopMethod), - "stop_timeout": helper.getDeleteLabel(LabelStopTimeout), - "stop_signal": helper.getDeleteLabel(LabelStopSignal), - "start_endpoint": helper.getDeleteLabel(LabelStartEndpoint), - "depends_on": Dependencies(c), + "idle_timeout": helper.getDeleteLabel(LabelIdleTimeout), + "wake_timeout": helper.getDeleteLabel(LabelWakeTimeout), + "stop_method": helper.getDeleteLabel(LabelStopMethod), + "stop_timeout": helper.getDeleteLabel(LabelStopTimeout), + "stop_signal": helper.getDeleteLabel(LabelStopSignal), + "start_endpoint": helper.getDeleteLabel(LabelStartEndpoint), + "depends_on": Dependencies(c), + "no_loading_page": helper.getDeleteLabel(LabelNoLoadingPage), } // ensure it's deleted from labels diff --git a/internal/docker/labels.go b/internal/docker/labels.go index bb8e917c..fa9c2808 100644 --- a/internal/docker/labels.go +++ b/internal/docker/labels.go @@ -14,5 +14,6 @@ const ( LabelStopSignal = NSProxy + ".stop_signal" LabelStartEndpoint = NSProxy + ".start_endpoint" LabelDependsOn = NSProxy + ".depends_on" + LabelNoLoadingPage = NSProxy + ".no_loading_page" // No loading page when using idlewatcher LabelNetwork = NSProxy + ".network" ) diff --git a/internal/idlewatcher/handle_http.go b/internal/idlewatcher/handle_http.go index e43bd9a7..e6429ef0 100644 --- a/internal/idlewatcher/handle_http.go +++ b/internal/idlewatcher/handle_http.go @@ -175,7 +175,7 @@ func (w *Watcher) wakeFromHTTP(rw http.ResponseWriter, r *http.Request) (shouldN } } - if !acceptHTML { + if !acceptHTML || w.cfg.NoLoadingPage { // send a continue response to prevent client wait-header timeout rw.WriteHeader(http.StatusContinue) ready := w.waitForReady(r.Context()) diff --git a/internal/types/idlewatcher.go b/internal/types/idlewatcher.go index 8ebb876b..3188b98b 100644 --- a/internal/types/idlewatcher.go +++ b/internal/types/idlewatcher.go @@ -30,6 +30,7 @@ type ( StartEndpoint string `json:"start_endpoint,omitempty"` // Optional path that must be hit to start container DependsOn []string `json:"depends_on,omitempty"` + NoLoadingPage bool `json:"no_loading_page,omitempty"` valErr gperr.Error } // @name IdlewatcherConfig