Skip to content

Response body not being closed #401

Open
@miquella

Description

@miquella

The Go documentation states:

If the returned error is nil, the Response will contain a non-nil Body which the user is expected to close. If the Body is not both read to EOF and closed, the Client's underlying RoundTripper (typically Transport) may not be able to re-use a persistent TCP connection to the server for a subsequent "keep-alive" request.
https://pkg.go.dev/net/http#Client.Do

However, the CodeFresh Go SDK is failing to close the response body in many instances.

For example, the workflow Get method makes a request (via (*codefresh).requestAPI) and then decodes it (via (*codefresh).decodeResponseInto), but never closes the response's Body.

Unfortunately, the way the code is currently structured will require that most calls to (*codefresh).requestAPI remember to defer resp.Body.Close(), so it's likely to continue to be missed in many places.

It may be worthwhile to extend *codefresh with an additional abstraction that fully consumes the body, including taking the responsibility of closing it. That way it won't continue to be missed. Perhaps the (*codefresh).decodeResponseInto and similar methods could be repurposed? I haven't dug through the code enough to know.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions