testcontainers / testcontainers-go

Testcontainers for Go is a Go package that makes it simple to create and clean up container-based dependencies for automated integration/smoke tests. The clean, easy-to-use API enables developers to programmatically define containers that should be run as part of a test and clean up those resources when the test is done.
https://golang.testcontainers.org
MIT License
3.67k stars 503 forks source link

[Bug]: Goroutine Leaks in NewDockerCompose #2008

Open mhogara opened 11 months ago

mhogara commented 11 months ago

Testcontainers version

0.26.0

Using the latest Testcontainers version?

Yes

Host OS

Linux

Host arch

x86_64

Go version

1.21.3

Docker version

Client:
 Version:           20.10.5+dfsg1
 API version:       1.41
 Go version:        go1.15.15
 Git commit:        55c4c88
 Built:             Mon May 30 18:34:49 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server:
 Engine:
  Version:          20.10.5+dfsg1
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.15.15
  Git commit:       363e9a8
  Built:            Mon May 30 18:34:49 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.13~ds1
  GitCommit:        1.4.13~ds1-1~deb11u4
 runc:
  Version:          1.0.0~rc93+ds1
  GitCommit:        1.0.0~rc93+ds1-5+deb11u2
 docker-init:
  Version:          0.19.0
  GitCommit:

Docker info

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc., v0.11.2)
  compose: Docker Compose (Docker Inc., v2.20.2)

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 6714
 Server Version: 20.10.5+dfsg1
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 1.4.13~ds1-1~deb11u4
 runc version: 1.0.0~rc93+ds1-5+deb11u2
 init version: 
 Security Options:
  apparmor
  seccomp
   Profile: default
  cgroupns
 Kernel Version: 5.10.0-25-amd64
 Operating System: Debian GNU/Linux 11 (bullseye)
 OSType: linux
 Architecture: x86_64
 CPUs: 8
 Total Memory: 39.14GiB
 Name: vdi-dd1ah2-158
 ID: PPEH:OYUB:PB3G:EOCK:BISM:UIXT:K4Y3:QMVY:PY2U:7SUR:GOFB:SOME
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false
 Default Address Pools:
   Base: 192.168.0.0/16, Size: 24

What happened?

This is somewhat of a follow up to #2007 (possibly same issue, but I'll let the team here reorganize as needed). I did some searching in the current issues and could not find anything on go leaks.

Problem at Hand

Running a simple test that takes up a NewDockerCompose from testcontainers-go/modules/compose leaks 2 goroutines (as caught by goleak.VerifyNone(t). There are 2 leaks with a wait strategy; without a wait strategy, 4 go routines are leaking. The container or docker compose file does not affect anything.

Interestingly enough, these problems do not happen if you use the deprecated NewLocalDockerCompose.

I'll include reproduction code below and under "Relevant log output", I'll put the two goroutine leaks you get when you have a wait strategy.

What I've Observed/Debugging

It seems to be like 2 of the goroutines come from the creation of the Docker compose and another 2 come from some sort of waiting that happens after. From debugging, it seems like some of those leaks could come from calls to NewClientHTTPS or NewDockerClientWithOpts.

Let me know if I can share anything else to help.

Relevant log output

--- FAIL: TestIntegrationSuite (1.80s)
    /glnxa64/golang/src/internal/registrystore/redis/store_test.go:50: found unexpected goroutines:
        [Goroutine 52 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
        goroutine 52 [IO wait]:
        internal/poll.runtime_pollWait(0x7f17fe4dede8, 0x72)
            /glnxa64/golang/src/runtime/netpoll.go:343 +0x85
        internal/poll.(*pollDesc).wait(0xc000714b00?, 0xc00023b000?, 0x0)
            /glnxa64/golang/src/internal/poll/fd_poll_runtime.go:84 +0x27
        internal/poll.(*pollDesc).waitRead(...)
            /glnxa64/golang/src/internal/poll/fd_poll_runtime.go:89
        internal/poll.(*FD).Read(0xc000714b00, {0xc00023b000, 0x1000, 0x1000})
            /glnxa64/golang/src/internal/poll/fd_unix.go:164 +0x27a
        net.(*netFD).Read(0xc000714b00, {0xc00023b000?, 0xc000549ec8?, 0xc000518960?})
            /glnxa64/golang/src/net/fd_posix.go:55 +0x25
        net.(*conn).Read(0xc0000906c8, {0xc00023b000?, 0x0?, 0x0?})
            /glnxa64/golang/src/net/net.go:179 +0x45
        net/http.(*persistConn).Read(0xc0006517a0, {0xc00023b000?, 0x451a20?, 0xc000549ec8?})
            /glnxa64/golang/src/net/http/transport.go:1954 +0x4a
        bufio.(*Reader).fill(0xc0000b6e40)
            /glnxa64/golang/src/bufio/bufio.go:113 +0x103
        bufio.(*Reader).Peek(0xc0000b6e40, 0x1)
            /glnxa64/golang/src/bufio/bufio.go:151 +0x53
        net/http.(*persistConn).readLoop(0xc0006517a0)
            /glnxa64/golang/src/net/http/transport.go:2118 +0x1b9
        created by net/http.(*Transport).dialConn in goroutine 51
            /glnxa64/golang/src/net/http/transport.go:1776 +0x169f

         Goroutine 53 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
        goroutine 53 [select]:
        net/http.(*persistConn).writeLoop(0xc0006517a0)
            /glnxa64/golang/src/net/http/transport.go:2421 +0xe5
        created by net/http.(*Transport).dialConn in goroutine 51
            /glnxa64/golang/src/net/http/transport.go:1777 +0x16f1
        ]
FAIL

Additional information

Here's some code that causes the 2 goroutine leaks(docker compose file/wait strategy can be anything, I'm using a Redis container):

func TestIntegrationSuite(t *testing.T) {
    defer goleak.VerifyNone(t)
    compose, _ := tc.NewDockerCompose(dockerComposeFile)
    compose.
        WaitForService("redis", wait.NewLogStrategy("Ready to accept connections tcp")). 
        Up(context.Background(), tc.Wait(true))

    t.Cleanup(func() {
        compose.Down(context.Background(), tc.RemoveOrphans(true), tc.RemoveVolumes(true))

    })

To see the case where there are 4 leaking goroutines, you just need to comment out the "WaitForService" line.

Here's the code that has no goroutine leaks:

func TestIntegrationSuite(t *testing.T) {
    defer goleak.VerifyNone(t)
    identifier := "marisa"

    compose := tc.NewLocalDockerCompose([]string{dockerComposeFile}, identifier)
    err := compose.WithCommand([]string{"up", "-d"}).
        WithExposedService("redis", 6379, wait.ForLog("Ready to accept connections tcp")).
        Invoke()

    if err.Error != nil {
        defer compose.Down()
        t.Fatal("Invoking docker-compose failed with error: ", err)
    }

    t.Cleanup(func() {
        defer compose.Down()
    })
}
mdelapenya commented 11 months ago

Thanks @mhogara for raising this issue. Would you be interested in contributing a fix?

mhogara commented 11 months ago

👍🏻 If I have the time, I'll start work on a fix @mdelapenya - will update this issue if I make any progress or have any questions.

mdelapenya commented 7 months ago

hey @mhogara I'm able to reproduce this issue adding the goleak dependency to a test in the compose module (not in the LocalDockerCompose, which is deprecated and will eventually be removed):

func TestDockerComposeAPIWithVolume(t *testing.T) {
    defer goleak.VerifyNone(t)

    path := RenderComposeWithVolume(t)
    compose, err := NewDockerCompose(path)
    require.NoError(t, err, "NewDockerCompose()")

    t.Cleanup(func() {
        require.NoError(t, compose.Down(context.Background(), RemoveOrphans(true), RemoveImagesLocal), "compose.Down()")
    })

    ctx, cancel := context.WithCancel(context.Background())
    t.Cleanup(cancel)

    err = compose.Up(ctx, Wait(true))
    require.NoError(t, err, "compose.Up()")
}

with the result you described:

=== RUN   TestDockerComposeAPIWithVolume
2024/04/24 14:09:39 github.com/testcontainers/testcontainers-go - Connected to docker:
  Server Version: 25.0.3 (via Testcontainers Desktop 1.10.1)
  API Version: 1.44
  Operating System: Docker Desktop
  Total Memory: 7841 MB
  Resolved Docker Host: tcp://127.0.0.1:65193
  Resolved Docker Socket Path: /var/run/docker.sock
  Test SessionID: 16b820b1c54cd4ac6978ece66062fd9f02fea5bc176950527fc322ecbe4b3bb6
  Test ProcessID: 87d250de-ddb8-42f6-ae2c-240408e30983
2024/04/24 14:09:39 🐳 Creating container for image testcontainers/ryuk:0.7.0
2024/04/24 14:09:39 ✅ Container created: e156ee059308
2024/04/24 14:09:39 🐳 Starting container: e156ee059308
2024/04/24 14:09:39 ✅ Container started: e156ee059308
2024/04/24 14:09:39 🚧 Waiting for container id e156ee059308 image: testcontainers/ryuk:0.7.0. Waiting for: &{Port:8080/tcp timeout:<nil> PollInterval:100ms}
2024/04/24 14:09:39 🔔 Container is ready: e156ee059308
time="2024-04-24T14:09:39+02:00" level=warning msg="The \"bar\" variable is not set. Defaulting to a blank string."
 Network 423324a4-a2d8-4dbf-b392-3260a97b91b6_default  Creating
 Network 423324a4-a2d8-4dbf-b392-3260a97b91b6_default  Created
 Volume "423324a4-a2d8-4dbf-b392-3260a97b91b6_mydata"  Creating
 Volume "423324a4-a2d8-4dbf-b392-3260a97b91b6_mydata"  Created
 Container 423324a4-a2d8-4dbf-b392-3260a97b91b6-api-nginx-1  Creating
 Container 423324a4-a2d8-4dbf-b392-3260a97b91b6-api-nginx-1  Created
 Container 423324a4-a2d8-4dbf-b392-3260a97b91b6-api-nginx-1  Starting
 Container 423324a4-a2d8-4dbf-b392-3260a97b91b6-api-nginx-1  Started
 Container 423324a4-a2d8-4dbf-b392-3260a97b91b6-api-nginx-1  Waiting
 Container 423324a4-a2d8-4dbf-b392-3260a97b91b6-api-nginx-1  Healthy
    /Users/mdelapenya/sourcecode/src/github.com/testcontainers/testcontainers-go/modules/compose/compose_api_test.go:568: found unexpected goroutines:
        [Goroutine 48 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
        internal/poll.runtime_pollWait(0x12b77a4a0, 0x72)
            /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
        internal/poll.(*pollDesc).wait(0x1400048e500?, 0x140006c3000?, 0x0)
            /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
        internal/poll.(*pollDesc).waitRead(...)
            /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
        internal/poll.(*FD).Read(0x1400048e500, {0x140006c3000, 0x1000, 0x1000})
            /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
        net.(*netFD).Read(0x1400048e500, {0x140006c3000?, 0x0?, 0x14000485860?})
            /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
        net.(*conn).Read(0x14000594700, {0x140006c3000?, 0x0?, 0x0?})
            /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
        net/http.(*persistConn).Read(0x1400080e900, {0x140006c3000?, 0x1009373a0?, 0x140007898c0?})
            /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
        bufio.(*Reader).fill(0x140004812c0)
            /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
        bufio.(*Reader).Peek(0x140004812c0, 0x1)
            /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
        net/http.(*persistConn).readLoop(0x1400080e900)
            /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
        created by net/http.(*Transport).dialConn in goroutine 60
            /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
         Goroutine 49 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
        net/http.(*persistConn).writeLoop(0x1400080e900)
            /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
        created by net/http.(*Transport).dialConn in goroutine 60
            /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
        ]
 Container 423324a4-a2d8-4dbf-b392-3260a97b91b6-api-nginx-1  Stopping
 Container 423324a4-a2d8-4dbf-b392-3260a97b91b6-api-nginx-1  Stopped
 Container 423324a4-a2d8-4dbf-b392-3260a97b91b6-api-nginx-1  Removing
 Container 423324a4-a2d8-4dbf-b392-3260a97b91b6-api-nginx-1  Removed
 Network 423324a4-a2d8-4dbf-b392-3260a97b91b6_default  Removing
 Network 423324a4-a2d8-4dbf-b392-3260a97b91b6_default  Removed
--- FAIL: TestDockerComposeAPIWithVolume (1.81s)
FAIL
FAIL    github.com/testcontainers/testcontainers-go/modules/compose 2.434s

From that report, I can only say that the leak comes from another package, not from testcontainers-go.

I've even run all the tests in the compose_api_test.go file, adding a TestMain with a call to goleak, and the result is showing that the leaks come from other package, like an HTTP connection still being in use:

func TestMain(m *testing.M) {
    defer goleak.VerifyTestMain(m)
}

the goleak report for the entire execution shows that no testcontainers-go code is in use:

goleak: Errors on successful test run: found unexpected goroutines:
[Goroutine 816 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d4abd88, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x140000cc500?, 0x14000686000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x140000cc500, {0x14000686000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x140000cc500, {0x14000686000?, 0x14000623d40?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000714228, {0x14000686000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x14000826d80, {0x14000686000?, 0x14000ae1d18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x14000b92f60)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x14000b92f60, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x14000826d80)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 814
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 100 in state select, 1 minutes, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x14000733c20)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 114
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 148 in state select, 1 minutes, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x140002d70e0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 140
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 99 in state IO wait, 1 minutes, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d52a5a0, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x14000440a00?, 0x140006ef000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14000440a00, {0x140006ef000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x14000440a00, {0x140006ef000?, 0x14000583040?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000602700, {0x140006ef000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x14000733c20, {0x140006ef000?, 0x1400009bd18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x140000b5320)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x140000b5320, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x14000733c20)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 114
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 353 in state IO wait, 1 minutes, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d529ed8, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x14000a18300?, 0x140005f3000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14000a18300, {0x140005f3000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x14000a18300, {0x140005f3000?, 0x140000f2b60?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000714298, {0x140005f3000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x140003246c0, {0x140005f3000?, 0x14000ae0d18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x140000b5f80)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x140000b5f80, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x140003246c0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 331
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 772 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x14000713440)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 737
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 147 in state IO wait, 1 minutes, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d52a4a8, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x140001a6f80?, 0x14000682000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x140001a6f80, {0x14000682000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x140001a6f80, {0x14000682000?, 0x14000622b60?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000129b38, {0x14000682000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x140002d70e0, {0x14000682000?, 0x1400009fd18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x14000425800)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x14000425800, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x140002d70e0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 140
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 771 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d529810, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x140003f4c80?, 0x140006f1000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x140003f4c80, {0x140006f1000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x140003f4c80, {0x140006f1000?, 0x14000623040?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x140006023a8, {0x140006f1000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x14000713440, {0x140006f1000?, 0x140005d7d18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x1400053dc20)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x1400053dc20, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x14000713440)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 737
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 988 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d4ab5c8, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x14000894600?, 0x14000802000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14000894600, {0x14000802000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x14000894600, {0x14000802000?, 0x14000777380?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000602008, {0x14000802000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x14000980b40, {0x14000802000?, 0x140004b0d18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x140004244e0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x140004244e0, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x14000980b40)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 1064
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 807 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x1400099f7a0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 820
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 998 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d4ab8b0, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x140000cc580?, 0x14000842000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x140000cc580, {0x14000842000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x140000cc580, {0x14000842000?, 0x14000b28340?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000906088, {0x14000842000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x140008d3200, {0x14000842000?, 0x14000927d18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x140004257a0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x140004257a0, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x140008d3200)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 1046
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 233 in state select, 1 minutes, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x14000aa0900)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 222
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 230 in state IO wait, 1 minutes, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d52a2b8, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x14000a18e00?, 0x140005e0000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14000a18e00, {0x140005e0000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x14000a18e00, {0x140005e0000?, 0x140000f2d00?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x140007a0198, {0x140005e0000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x14000733d40, {0x140005e0000?, 0x140004b6d18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x14000a293e0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x14000a293e0, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x14000733d40)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 228
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 231 in state select, 1 minutes, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x14000733d40)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 228
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 806 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d4abf78, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x14000b0aa00?, 0x1400078e000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14000b0aa00, {0x1400078e000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x14000b0aa00, {0x1400078e000?, 0x14000776b60?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000714b18, {0x1400078e000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x1400099f7a0, {0x1400078e000?, 0x140007c0d18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x14000b25d40)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x14000b25d40, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x1400099f7a0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 820
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 943 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d4ab7b8, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x140001a6c80?, 0x140006ee000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x140001a6c80, {0x140006ee000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x140001a6c80, {0x140006ee000?, 0x14000776680?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x140008d8000, {0x140006ee000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x140002d7440, {0x140006ee000?, 0x140005d0d18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x1400013e360)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x1400013e360, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x140002d7440)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 1026
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 944 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x140002d7440)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 1026
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 232 in state IO wait, 1 minutes, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d52a1c0, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x140003f4780?, 0x140005e2000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x140003f4780, {0x140005e2000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x140003f4780, {0x140005e2000?, 0x140000f2820?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x140007a01a0, {0x140005e2000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x14000aa0900, {0x140005e2000?, 0x140005dad18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x14000a294a0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x14000a294a0, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x14000aa0900)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 222
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 348 in state IO wait, 1 minutes, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d52a3b0, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x140000cc900?, 0x140005f0000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x140000cc900, {0x140005f0000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x140000cc900, {0x140005f0000?, 0x140000f2820?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000714260, {0x140005f0000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x140008d2900, {0x140005f0000?, 0x14000ae3d18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x140000b5bc0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x140000b5bc0, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x140008d2900)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 346
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 297 in state IO wait, 1 minutes, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d52a0c8, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x140001a6d80?, 0x140006cc000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x140001a6d80, {0x140006cc000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x140001a6d80, {0x140006cc000?, 0x14000103520?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000714990, {0x140006cc000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x14000aa0360, {0x140006cc000?, 0x14000adcd18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x140000b4600)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x140000b4600, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x14000aa0360)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 276
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 349 in state select, 1 minutes, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x140008d2900)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 346
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 538 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x14000732d80)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 535
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 298 in state select, 1 minutes, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x14000aa0360)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 276
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 890 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d4abb98, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x14000b0a780?, 0x14000849000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14000b0a780, {0x14000849000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x14000b0a780, {0x14000849000?, 0x0?, 0x14000103d40?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000715168, {0x14000849000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x140008c2120, {0x14000849000?, 0x1029a2fc0?, 0x140008018c0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x14000b254a0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x14000b254a0, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x140008c2120)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 917
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 634 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x1400099e900)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 656
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 966 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d4ab9a8, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x140000cc300?, 0x140007d4000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x140000cc300, {0x140007d4000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x140000cc300, {0x140007d4000?, 0x1400066c1a0?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000714480, {0x140007d4000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x14000aa0240, {0x140007d4000?, 0x1400067fd18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x14000a285a0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x14000a285a0, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x14000aa0240)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 981
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 859 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x140008fb8c0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 903
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 370 in state select, 1 minutes, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x140003246c0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 331
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 461 in state select, 1 minutes, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x140002d65a0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 458
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 537 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d529bf0, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x14000a18200?, 0x14000551000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14000a18200, {0x14000551000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x14000a18200, {0x14000551000?, 0x140007761a0?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x140006021d0, {0x14000551000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x14000732d80, {0x14000551000?, 0x140006bfd18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x14000a29020)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x14000a29020, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x14000732d80)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 535
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 817 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x14000826d80)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 814
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 65 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x140007330e0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 583
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 460 in state IO wait, 1 minutes, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d529de0, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x14000894280?, 0x14000abb000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14000894280, {0x14000abb000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x14000894280, {0x14000abb000?, 0x140000f3ba0?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000602128, {0x14000abb000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x140002d65a0, {0x14000abb000?, 0x140006bdd18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x140000b52c0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x140000b52c0, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x140002d65a0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 458
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 64 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d529af8, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x140000cc880?, 0x14000b70000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x140000cc880, {0x14000b70000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x140000cc880, {0x14000b70000?, 0x1400066d040?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000714710, {0x14000b70000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x140007330e0, {0x14000b70000?, 0x14000aded18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x14000a29920)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x14000a29920, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x140007330e0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 583
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 989 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x14000980b40)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 1064
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 483 in state IO wait, 1 minutes, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d529ce8, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x140001a7300?, 0x1400080e000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x140001a7300, {0x1400080e000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x140001a7300, {0x1400080e000?, 0x14000623d40?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x140007a09f0, {0x1400080e000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x1400090e6c0, {0x1400080e000?, 0x140007bcd18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x14000481380)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x14000481380, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x1400090e6c0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 481
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 484 in state select, 1 minutes, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x1400090e6c0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 481
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 959 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d4abaa0, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x14000894180?, 0x140005f2000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14000894180, {0x140005f2000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x14000894180, {0x140005f2000?, 0x0?, 0x14000b284e0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x140007a0028, {0x140005f2000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x14000aa0120, {0x140005f2000?, 0x1029a2fc0?, 0x1400074e300?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x140000b4060)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x140000b4060, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x14000aa0120)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 881
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 762 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d529718, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x14000b0a800?, 0x14000859000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14000b0a800, {0x14000859000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x14000b0a800, {0x14000859000?, 0x1400066dd40?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x140007a00a8, {0x14000859000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x140002d7200, {0x14000859000?, 0x14000609d18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x14000481bc0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x14000481bc0, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x140002d7200)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 760
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 891 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x140008c2120)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 917
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 659 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d529a00, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x14000b95480?, 0x14000691000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14000b95480, {0x14000691000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x14000b95480, {0x14000691000?, 0x14000485380?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000602458, {0x14000691000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x140008fa900, {0x14000691000?, 0x140006c1d18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x14000b92840)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x14000b92840, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x140008fa900)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 97
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 660 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x140008fa900)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 97
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 960 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x14000aa0120)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 881
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 633 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d529908, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x140000cc680?, 0x14000604000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x140000cc680, {0x14000604000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x140000cc680, {0x14000604000?, 0x1400066d040?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000602000, {0x14000604000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x1400099e900, {0x14000604000?, 0x14000addd18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x14000480420)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x14000480420, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x1400099e900)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 656
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 763 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x140002d7200)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 760
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 684 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d529fd0, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x14000b94080?, 0x14000910000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14000b94080, {0x14000910000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x14000b94080, {0x14000910000?, 0x1400066cd00?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x140000901b0, {0x14000910000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x14000826240, {0x14000910000?, 0x1400092bd18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x14000424e40)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x14000424e40, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x14000826240)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 682
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 685 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x14000826240)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 682
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 667 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d4abe80, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x14000440380?, 0x140006f0000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14000440380, {0x140006f0000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x14000440380, {0x140006f0000?, 0x1400066c000?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x140007a0020, {0x140006f0000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x1400090e000, {0x140006f0000?, 0x14000ae2d18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x14000b24420)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x14000b24420, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x1400090e000)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 665
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 668 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x1400090e000)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 665
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 1077 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d4ab6c0, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x14000894580?, 0x140006c7000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14000894580, {0x140006c7000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x14000894580, {0x140006c7000?, 0x1400066c1a0?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x140007a0170, {0x140006c7000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x14000980a20, {0x140006c7000?, 0x1400067dd18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x14000b25200)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x14000b25200, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x14000980a20)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 1060
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 858 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d4abc90, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x14000a18880?, 0x140005c0000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14000a18880, {0x140005c0000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x14000a18880, {0x140005c0000?, 0x1400066d380?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000602848, {0x140005c0000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x140008fb8c0, {0x140005c0000?, 0x1400067cd18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x1400013e7e0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x1400013e7e0, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x140008fb8c0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 903
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 1095 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x140002d6000)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 1123
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 967 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x14000aa0240)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 981
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 999 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x140008d3200)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 1046
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 1078 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x14000980a20)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 1060
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 1094 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d4ab4d0, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x140003f4b80?, 0x14000680000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x140003f4b80, {0x14000680000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x140003f4b80, {0x14000680000?, 0x140006224e0?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x140008d8050, {0x14000680000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x140002d6000, {0x14000680000?, 0x140007c5d18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x140000b4900)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x140000b4900, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x140002d6000)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 1123
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 1365 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d4ab0f0, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x14000b0a400?, 0x14000804000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14000b0a400, {0x14000804000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x14000b0a400, {0x14000804000?, 0x14000623380?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x140008d8200, {0x14000804000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x14000940a20, {0x14000804000?, 0x140005cfd18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x14000b929c0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x14000b929c0, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x14000940a20)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 1245
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 1103 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x14000882d80)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 1147
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 1102 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d4ab3d8, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x140001a7500?, 0x140008b6000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x140001a7500, {0x140008b6000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x140001a7500, {0x140008b6000?, 0x0?, 0x14000913d40?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x140008d80f8, {0x140008b6000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x14000882d80, {0x140008b6000?, 0x1029a2fc0?, 0x140009092c0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x140000b5920)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x140000b5920, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x14000882d80)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 1147
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 1359 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0x12d4ab1e8, 0x72)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/runtime/netpoll.go:343 +0xa0
internal/poll.(*pollDesc).wait(0x14000441500?, 0x140009ff000?, 0x0)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14000441500, {0x140009ff000, 0x1000, 0x1000})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x14000441500, {0x140009ff000?, 0x14000891040?, 0x3?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000906258, {0x140009ff000?, 0x0?, 0x0?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/net.go:179 +0x34
net/http.(*persistConn).Read(0x14000882000, {0x140009ff000?, 0x140006e2d18?, 0x1029ea050?})
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1954 +0x50
bufio.(*Reader).fill(0x14000a14960)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:113 +0xf8
bufio.(*Reader).Peek(0x14000a14960, 0x1)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/bufio/bufio.go:151 +0x60
net/http.(*persistConn).readLoop(0x14000882000)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2118 +0x14c
created by net/http.(*Transport).dialConn in goroutine 1368
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1776 +0x1144
 Goroutine 1366 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x14000940a20)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 1245
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
 Goroutine 1360 in state select, with net/http.(*persistConn).writeLoop on top of the stack:
net/http.(*persistConn).writeLoop(0x14000882000)
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:2421 +0x9c
created by net/http.(*Transport).dialConn in goroutine 1368
    /Users/mdelapenya/.gvm/versions/go1.21.7.darwin.arm64/src/net/http/transport.go:1777 +0x118c
]
mdelapenya commented 7 months ago

@mhogara if you agree, we should close this one as my guess is that it's not caused by us. Wdyt?

mhogara commented 7 months ago

Hi @mdelapenya Thanks for getting back to this and finding reproduction steps. 😊 I agree, it looks like the root cause of the go leak(s) is another package, not testcontainers-go.

I'd prefer to keep this issue open as long as the go leak is still occuring in the code though and we have no solid solution; this leak does require a workaround/change in my code, so to have it closed would make it harder for me to track when/how long I need this workaround to be present.

I would also be interested in which package exactly this leak is coming from 🤔 - I'm not sure how much investigation that would take. If we could pinpoint the package that causes this, we should make an issue for them to track it and further investigate.

I was also thinking over your hypothesis about an HTTP connection causing the leak and found this SO post: https://stackoverflow.com/questions/75026700/goroutine-leaks-when-trying-to-readallresponse-body-where-response-is-retu. That feels promising, I'm not sure if you've seen it. After thinking it through, this could stop the leak if it coming from the polling for the wait strategy(assuming there's an internal client?). I'd be happy to look into this possible solution, but it might take a while for me to have enough time to get to it.

mdelapenya commented 3 months ago

@mhogara I still see this issue with the latest release, so I'd appreciate if you can check whether that http wait is promising or not. Please let me know if you have bandwidth for that 🙏

mhogara commented 3 months ago

@mdelapenya I'm a bit swamped right now, so I don't think I'll get to this anytime soon. 😢 I'll update this thread when I do have the time.