From 58356450fa152795d16a95a8a0116ab12f0178bc Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Fri, 24 Oct 2025 19:30:22 +0200 Subject: [PATCH] client: remove redundant closing and draining of response For methods using the decodeWithRaw utility, we were handling closing of the body twice. The ensureReaderClosed utility also drains the response to let the transport reuse the connnection. Let's use that utility in decodeWithRaw as well. Signed-off-by: Sebastiaan van Stijn --- client/config_inspect.go | 1 - client/network_inspect.go | 1 - client/plugin_inspect.go | 1 - client/secret_inspect.go | 1 - client/service_inspect.go | 1 - client/task_inspect.go | 1 - client/utils.go | 2 +- client/volume_inspect.go | 1 - vendor/github.com/moby/moby/client/config_inspect.go | 1 - vendor/github.com/moby/moby/client/network_inspect.go | 1 - vendor/github.com/moby/moby/client/plugin_inspect.go | 1 - vendor/github.com/moby/moby/client/secret_inspect.go | 1 - vendor/github.com/moby/moby/client/service_inspect.go | 1 - vendor/github.com/moby/moby/client/task_inspect.go | 1 - vendor/github.com/moby/moby/client/utils.go | 2 +- vendor/github.com/moby/moby/client/volume_inspect.go | 1 - 16 files changed, 2 insertions(+), 16 deletions(-) diff --git a/client/config_inspect.go b/client/config_inspect.go index d048a21b7b..0bf0ff7916 100644 --- a/client/config_inspect.go +++ b/client/config_inspect.go @@ -25,7 +25,6 @@ func (cli *Client) ConfigInspect(ctx context.Context, id string, options ConfigI return ConfigInspectResult{}, err } resp, err := cli.get(ctx, "/configs/"+id, nil, nil) - defer ensureReaderClosed(resp) if err != nil { return ConfigInspectResult{}, err } diff --git a/client/network_inspect.go b/client/network_inspect.go index 34c156d679..7757805276 100644 --- a/client/network_inspect.go +++ b/client/network_inspect.go @@ -29,7 +29,6 @@ func (cli *Client) NetworkInspect(ctx context.Context, networkID string, options } resp, err := cli.get(ctx, "/networks/"+networkID, query, nil) - defer ensureReaderClosed(resp) if err != nil { return NetworkInspectResult{}, err } diff --git a/client/plugin_inspect.go b/client/plugin_inspect.go index 2837624a50..8caf06a8e0 100644 --- a/client/plugin_inspect.go +++ b/client/plugin_inspect.go @@ -25,7 +25,6 @@ func (cli *Client) PluginInspect(ctx context.Context, name string, options Plugi return PluginInspectResult{}, err } resp, err := cli.get(ctx, "/plugins/"+name+"/json", nil, nil) - defer ensureReaderClosed(resp) if err != nil { return PluginInspectResult{}, err } diff --git a/client/secret_inspect.go b/client/secret_inspect.go index ad0998fa6a..fefd4cd23d 100644 --- a/client/secret_inspect.go +++ b/client/secret_inspect.go @@ -25,7 +25,6 @@ func (cli *Client) SecretInspect(ctx context.Context, id string, options SecretI return SecretInspectResult{}, err } resp, err := cli.get(ctx, "/secrets/"+id, nil, nil) - defer ensureReaderClosed(resp) if err != nil { return SecretInspectResult{}, err } diff --git a/client/service_inspect.go b/client/service_inspect.go index 7075b68bb2..9bda43f861 100644 --- a/client/service_inspect.go +++ b/client/service_inspect.go @@ -30,7 +30,6 @@ func (cli *Client) ServiceInspect(ctx context.Context, serviceID string, options query := url.Values{} query.Set("insertDefaults", fmt.Sprintf("%v", options.InsertDefaults)) resp, err := cli.get(ctx, "/services/"+serviceID, query, nil) - defer ensureReaderClosed(resp) if err != nil { return ServiceInspectResult{}, err } diff --git a/client/task_inspect.go b/client/task_inspect.go index a79a3ba6a6..96edcb09f2 100644 --- a/client/task_inspect.go +++ b/client/task_inspect.go @@ -26,7 +26,6 @@ func (cli *Client) TaskInspect(ctx context.Context, taskID string, options TaskI } resp, err := cli.get(ctx, "/tasks/"+taskID, nil, nil) - defer ensureReaderClosed(resp) if err != nil { return TaskInspectResult{}, err } diff --git a/client/utils.go b/client/utils.go index 7359c27bda..54d0deef19 100644 --- a/client/utils.go +++ b/client/utils.go @@ -74,7 +74,7 @@ func decodeWithRaw[T any](resp *http.Response, out *T) (raw json.RawMessage, _ e if resp == nil || resp.Body == nil { return nil, errors.New("empty response") } - defer resp.Body.Close() + defer ensureReaderClosed(resp) var buf bytes.Buffer tr := io.TeeReader(resp.Body, &buf) diff --git a/client/volume_inspect.go b/client/volume_inspect.go index 621eb27ef1..cf00236a2a 100644 --- a/client/volume_inspect.go +++ b/client/volume_inspect.go @@ -26,7 +26,6 @@ func (cli *Client) VolumeInspect(ctx context.Context, volumeID string, options V } resp, err := cli.get(ctx, "/volumes/"+volumeID, nil, nil) - defer ensureReaderClosed(resp) if err != nil { return VolumeInspectResult{}, err } diff --git a/vendor/github.com/moby/moby/client/config_inspect.go b/vendor/github.com/moby/moby/client/config_inspect.go index d048a21b7b..0bf0ff7916 100644 --- a/vendor/github.com/moby/moby/client/config_inspect.go +++ b/vendor/github.com/moby/moby/client/config_inspect.go @@ -25,7 +25,6 @@ func (cli *Client) ConfigInspect(ctx context.Context, id string, options ConfigI return ConfigInspectResult{}, err } resp, err := cli.get(ctx, "/configs/"+id, nil, nil) - defer ensureReaderClosed(resp) if err != nil { return ConfigInspectResult{}, err } diff --git a/vendor/github.com/moby/moby/client/network_inspect.go b/vendor/github.com/moby/moby/client/network_inspect.go index 34c156d679..7757805276 100644 --- a/vendor/github.com/moby/moby/client/network_inspect.go +++ b/vendor/github.com/moby/moby/client/network_inspect.go @@ -29,7 +29,6 @@ func (cli *Client) NetworkInspect(ctx context.Context, networkID string, options } resp, err := cli.get(ctx, "/networks/"+networkID, query, nil) - defer ensureReaderClosed(resp) if err != nil { return NetworkInspectResult{}, err } diff --git a/vendor/github.com/moby/moby/client/plugin_inspect.go b/vendor/github.com/moby/moby/client/plugin_inspect.go index 2837624a50..8caf06a8e0 100644 --- a/vendor/github.com/moby/moby/client/plugin_inspect.go +++ b/vendor/github.com/moby/moby/client/plugin_inspect.go @@ -25,7 +25,6 @@ func (cli *Client) PluginInspect(ctx context.Context, name string, options Plugi return PluginInspectResult{}, err } resp, err := cli.get(ctx, "/plugins/"+name+"/json", nil, nil) - defer ensureReaderClosed(resp) if err != nil { return PluginInspectResult{}, err } diff --git a/vendor/github.com/moby/moby/client/secret_inspect.go b/vendor/github.com/moby/moby/client/secret_inspect.go index ad0998fa6a..fefd4cd23d 100644 --- a/vendor/github.com/moby/moby/client/secret_inspect.go +++ b/vendor/github.com/moby/moby/client/secret_inspect.go @@ -25,7 +25,6 @@ func (cli *Client) SecretInspect(ctx context.Context, id string, options SecretI return SecretInspectResult{}, err } resp, err := cli.get(ctx, "/secrets/"+id, nil, nil) - defer ensureReaderClosed(resp) if err != nil { return SecretInspectResult{}, err } diff --git a/vendor/github.com/moby/moby/client/service_inspect.go b/vendor/github.com/moby/moby/client/service_inspect.go index 7075b68bb2..9bda43f861 100644 --- a/vendor/github.com/moby/moby/client/service_inspect.go +++ b/vendor/github.com/moby/moby/client/service_inspect.go @@ -30,7 +30,6 @@ func (cli *Client) ServiceInspect(ctx context.Context, serviceID string, options query := url.Values{} query.Set("insertDefaults", fmt.Sprintf("%v", options.InsertDefaults)) resp, err := cli.get(ctx, "/services/"+serviceID, query, nil) - defer ensureReaderClosed(resp) if err != nil { return ServiceInspectResult{}, err } diff --git a/vendor/github.com/moby/moby/client/task_inspect.go b/vendor/github.com/moby/moby/client/task_inspect.go index a79a3ba6a6..96edcb09f2 100644 --- a/vendor/github.com/moby/moby/client/task_inspect.go +++ b/vendor/github.com/moby/moby/client/task_inspect.go @@ -26,7 +26,6 @@ func (cli *Client) TaskInspect(ctx context.Context, taskID string, options TaskI } resp, err := cli.get(ctx, "/tasks/"+taskID, nil, nil) - defer ensureReaderClosed(resp) if err != nil { return TaskInspectResult{}, err } diff --git a/vendor/github.com/moby/moby/client/utils.go b/vendor/github.com/moby/moby/client/utils.go index 7359c27bda..54d0deef19 100644 --- a/vendor/github.com/moby/moby/client/utils.go +++ b/vendor/github.com/moby/moby/client/utils.go @@ -74,7 +74,7 @@ func decodeWithRaw[T any](resp *http.Response, out *T) (raw json.RawMessage, _ e if resp == nil || resp.Body == nil { return nil, errors.New("empty response") } - defer resp.Body.Close() + defer ensureReaderClosed(resp) var buf bytes.Buffer tr := io.TeeReader(resp.Body, &buf) diff --git a/vendor/github.com/moby/moby/client/volume_inspect.go b/vendor/github.com/moby/moby/client/volume_inspect.go index 621eb27ef1..cf00236a2a 100644 --- a/vendor/github.com/moby/moby/client/volume_inspect.go +++ b/vendor/github.com/moby/moby/client/volume_inspect.go @@ -26,7 +26,6 @@ func (cli *Client) VolumeInspect(ctx context.Context, volumeID string, options V } resp, err := cli.get(ctx, "/volumes/"+volumeID, nil, nil) - defer ensureReaderClosed(resp) if err != nil { return VolumeInspectResult{}, err }