[beats receivers] Check whether we can stop ignoring HTTP goroutines in the leak detector
- Dominant language
- Go
- Stars
- 12.7k
- Forks
- 5k
- Avg merge
- 2d 15m
- Merged PRs (30d)
- 385
Description
After we unskipped `TestMultipleReceivers` in https://github.com/elastic/beats/pull/47228, the CI job `x-pack/filebeat: Ubuntu arm64 Unit Tests` started failing with goroutine leak errors, such as [`this`](https://buildkite.com/elastic/beats-xpack-filebeat/builds/24054#019a71f7-9f75-4214-9fbc-990b024131a5/154-557).
leaks.txt
```
=== FAIL: x-pack/filebeat/fbreceiver TestMultipleReceivers (107.31s)
oteltest.go:239: found unexpected goroutines:
[Goroutine 4755 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0xe734df771cc0, 0x77)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/runtime/netpoll.go:351 +0xa0
internal/poll.(*pollDesc).wait(0x4001dff400?, 0x0?, 0x0)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitWrite(...)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/internal/poll/fd_poll_runtime.go:93
internal/poll.(*FD).WaitWrite(...)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/internal/poll/fd_unix.go:692
net.(*netFD).connect(0x4001dff400, {0x966e6d8, 0x40003f2f50}, {0x2d9aad8?, 0x4000b29148?}, {0x95e2ea0?, 0x40012f8520?})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/fd_unix.go:141 +0x544
net.(*netFD).dial(0x4001dff400, {0x966e6d8, 0x40003f2f50}, {0x9681580?, 0x0?}, {0x9681580, 0x4000da8600}, 0x6?)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/sock_posix.go:124 +0x300
net.socket({0x966e6d8, 0x40003f2f50}, {0x8b5f6d8, 0x3}, 0x2, 0x1, 0x8b6040a?, 0x0, {0x9681580, 0x0}, ...)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/sock_posix.go:70 +0x214
net.internetSocket({0x966e6d8, 0x40003f2f50}, {0x8b5f6d8, 0x3}, {0x9681580, 0x0}, {0x9681580, 0x4000da8600}, 0x1, 0x0, ...)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/ipsock_posix.go:167 +0xa4
net.(*sysDialer).doDialTCPProto(0x40016aecc0, {0x966e6d8, 0x40003f2f50}, 0x0, 0x4000da8600, 0x0)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/tcpsock_posix.go:85 +0xac
net.(*sysDialer).doDialTCP(...)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/tcpsock_posix.go:75
net.(*sysDialer).dialTCP(0xd2dcb4a?, {0x966e6d8?, 0x40003f2f50?}, 0x2fecff4?, 0x4000b29428?)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/tcpsock_posix.go:71 +0x70
net.(*sysDialer).dialSingle(0x40016aecc0, {0x966e6d8, 0x40003f2f50}, {0x9610b10, 0x4000da8600})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/dial.go:721 +0x304
net.(*sysDialer).dialSerial(0x40016aecc0, {0x966e6d8, 0x40003f2f50}, {0x4001beb1a0?, 0x1, 0xd2ded20?})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/dial.go:686 +0x1a0
net.(*sysDialer).dialParallel(0x0?, {0x966e6d8?, 0x40003f2f50?}, {0x4001beb1a0?, 0x81dd720?, 0x8b5f6d8?}, {0x0?, 0x4002d296b0?, 0x13?})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/dial.go:587 +0x298
net.(*Dialer).DialContext(0x400144abd0, {0x966e668, 0x4000772f50}, {0x8b5f6d8, 0x3}, {0x4002d296b0, 0x13})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/dial.go:578 +0x548
net/http.(*Transport).dial(0x0?, {0x966e668?, 0x4000772f50?}, {0x8b5f6d8?, 0x0?}, {0x4002d296b0?, 0x400342cb28?})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/http/transport.go:1278 +0xdc
net/http.(*Transport).dialConn(0x4000838680, {0x966e668, 0x4000772f50}, {{}, 0x0, {0x40011865c0, 0x5}, {0x4002d296b0, 0x13}, 0x0})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/http/transport.go:1783 +0x608
net/http.(*Transport).dialConnFor(0x4000838680, 0x4006e6c9a0)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/http/transport.go:1618 +0x8c
net/http.(*Transport).startDialConnForLocked.func1()
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/http/transport.go:1600 +0x34
created by net/http.(*Transport).startDialConnForLocked in goroutine 4754
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/http/transport.go:1599 +0x114
Goroutine 4103 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0xe734fc19bc20, 0x77)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/runtime/netpoll.go:351 +0xa0
internal/poll.(*pollDesc).wait(0x4000950080?, 0x0?, 0x0)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitWrite(...)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/internal/poll/fd_poll_runtime.go:93
internal/poll.(*FD).WaitWrite(...)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/internal/poll/fd_unix.go:692
net.(*netFD).connect(0x4000950080, {0x966e6d8, 0x400005b180}, {0x2d9aad8?, 0x4000a0d148?}, {0x95e2ea0?, 0x40012e45c0?})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/fd_unix.go:141 +0x544
net.(*netFD).dial(0x4000950080, {0x966e6d8, 0x400005b180}, {0x9681580?, 0x0?}, {0x9681580, 0x40012ab080}, 0x8e296c0?)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/sock_posix.go:124 +0x300
net.socket({0x966e6d8, 0x400005b180}, {0x8b5f6d8, 0x3}, 0x2, 0x1, 0x8b6040a?, 0x0, {0x9681580, 0x0}, ...)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/sock_posix.go:70 +0x214
net.internetSocket({0x966e6d8, 0x400005b180}, {0x8b5f6d8, 0x3}, {0x9681580, 0x0}, {0x9681580, 0x40012ab080}, 0x1, 0x0, ...)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/ipsock_posix.go:167 +0xa4
net.(*sysDialer).doDialTCPProto(0x40006a0240, {0x966e6d8, 0x400005b180}, 0x0, 0x40012ab080, 0x0)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/tcpsock_posix.go:85 +0xac
net.(*sysDialer).doDialTCP(...)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/tcpsock_posix.go:75
net.(*sysDialer).dialTCP(0xd2dcb4a?, {0x966e6d8?, 0x400005b180?}, 0x2fecff4?, 0x4000a0d428?)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/tcpsock_posix.go:71 +0x70
net.(*sysDialer).dialSingle(0x40006a0240, {0x966e6d8, 0x400005b180}, {0x9610b10, 0x40012ab080})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/dial.go:721 +0x304
net.(*sysDialer).dialSerial(0x40006a0240, {0x966e6d8, 0x400005b180}, {0x4000330880?, 0x1, 0xd2ded20?})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/dial.go:686 +0x1a0
net.(*sysDialer).dialParallel(0x0?, {0x966e6d8?, 0x400005b180?}, {0x4000330880?, 0x81dd720?, 0x8b5f6d8?}, {0x0?, 0x4005958018?, 0x13?})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/dial.go:587 +0x298
net.(*Dialer).DialContext(0x40005de5a0, {0x966e668, 0x40001e2370}, {0x8b5f6d8, 0x3}, {0x4005958018, 0x13})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/dial.go:578 +0x548
net/http.(*Transport).dial(0x4002161c08?, {0x966e668?, 0x40001e2370?}, {0x8b5f6d8?, 0x4002161a98?}, {0x4005958018?, 0xd2b0040?})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/http/transport.go:1278 +0xdc
net/http.(*Transport).dialConn(0x4000838000, {0x966e668, 0x40001e2370}, {{}, 0x0, {0x40000bb5c0, 0x5}, {0x4005958018, 0x13}, 0x0})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/http/transport.go:1783 +0x608
net/http.(*Transport).dialConnFor(0x4000838000, 0x4006d880b0)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/http/transport.go:1618 +0x8c
net/http.(*Transport).startDialConnForLocked.func1()
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/http/transport.go:1600 +0x34
created by net/http.(*Transport).startDialConnForLocked in goroutine 4138
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/http/transport.go:1599 +0x114
Goroutine 4610 in state select, with net.(*netFD).connect.func2 on top of the stack:
net.(*netFD).connect.func2()
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/fd_unix.go:118 +0x70
created by net.(*netFD).connect in goroutine 4529
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/fd_unix.go:117 +0x298
Goroutine 4529 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0xe734df7ebef0, 0x77)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/runtime/netpoll.go:351 +0xa0
internal/poll.(*pollDesc).wait(0x400523a080?, 0x0?, 0x0)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitWrite(...)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/internal/poll/fd_poll_runtime.go:93
internal/poll.(*FD).WaitWrite(...)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/internal/poll/fd_unix.go:692
net.(*netFD).connect(0x400523a080, {0x966e6d8, 0x400046e5b0}, {0x2d9aad8?, 0x4001ae5148?}, {0x95e2ea0?, 0x40008c0080?})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/fd_unix.go:141 +0x544
net.(*netFD).dial(0x400523a080, {0x966e6d8, 0x400046e5b0}, {0x9681580?, 0x0?}, {0x9681580, 0x4001ade300}, 0xd2e8670?)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/sock_posix.go:124 +0x300
net.socket({0x966e6d8, 0x400046e5b0}, {0x8b5f6d8, 0x3}, 0x2, 0x1, 0x8b6040a?, 0x0, {0x9681580, 0x0}, ...)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/sock_posix.go:70 +0x214
net.internetSocket({0x966e6d8, 0x400046e5b0}, {0x8b5f6d8, 0x3}, {0x9681580, 0x0}, {0x9681580, 0x4001ade300}, 0x1, 0x0, ...)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/ipsock_posix.go:167 +0xa4
net.(*sysDialer).doDialTCPProto(0x40006a00c0, {0x966e6d8, 0x400046e5b0}, 0x0, 0x4001ade300, 0x0)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/tcpsock_posix.go:85 +0xac
net.(*sysDialer).doDialTCP(...)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/tcpsock_posix.go:75
net.(*sysDialer).dialTCP(0xd2dcb4a?, {0x966e6d8?, 0x400046e5b0?}, 0x2fecff4?, 0x4001ae5428?)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/tcpsock_posix.go:71 +0x70
net.(*sysDialer).dialSingle(0x40006a00c0, {0x966e6d8, 0x400046e5b0}, {0x9610b10, 0x4001ade300})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/dial.go:721 +0x304
net.(*sysDialer).dialSerial(0x40006a00c0, {0x966e6d8, 0x400046e5b0}, {0x40006b2080?, 0x1, 0xd2ded20?})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/dial.go:686 +0x1a0
net.(*sysDialer).dialParallel(0x0?, {0x966e6d8?, 0x400046e5b0?}, {0x40006b2080?, 0x81dd720?, 0x8b5f6d8?}, {0x0?, 0x4000674000?, 0x13?})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/dial.go:587 +0x298
net.(*Dialer).DialContext(0x40002a8000, {0x966e668, 0x4000342140}, {0x8b5f6d8, 0x3}, {0x4000674000, 0x13})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/dial.go:578 +0x548
net/http.(*Transport).dial(0x0?, {0x966e668?, 0x4000342140?}, {0x8b5f6d8?, 0x4001646aa8?}, {0x4000674000?, 0x4000430e00?})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/http/transport.go:1278 +0xdc
net/http.(*Transport).dialConn(0x400095b040, {0x966e668, 0x4000342140}, {{}, 0x0, {0x40007b2a00, 0x5}, {0x4000674000, 0x13}, 0x0})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/http/transport.go:1783 +0x608
net/http.(*Transport).dialConnFor(0x400095b040, 0x4001d24000)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/http/transport.go:1618 +0x8c
net/http.(*Transport).startDialConnForLocked.func1()
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/http/transport.go:1600 +0x34
created by net/http.(*Transport).startDialConnForLocked in goroutine 4539
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/http/transport.go:1599 +0x114
Goroutine 4104 in state select, with net.(*netFD).connect.func2 on top of the stack:
net.(*netFD).connect.func2()
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/fd_unix.go:118 +0x70
created by net.(*netFD).connect in goroutine 4103
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/fd_unix.go:117 +0x298
Goroutine 4357 in state select, with net.(*netFD).connect.func2 on top of the stack:
net.(*netFD).connect.func2()
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/fd_unix.go:118 +0x70
created by net.(*netFD).connect in goroutine 4356
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/fd_unix.go:117 +0x298
Goroutine 4356 in state IO wait, with internal/poll.runtime_pollWait on top of the stack:
internal/poll.runtime_pollWait(0xe734df7eeb40, 0x77)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/runtime/netpoll.go:351 +0xa0
internal/poll.(*pollDesc).wait(0x4000243d80?, 0x0?, 0x0)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitWrite(...)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/internal/poll/fd_poll_runtime.go:93
internal/poll.(*FD).WaitWrite(...)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/internal/poll/fd_unix.go:692
net.(*netFD).connect(0x4000243d80, {0x966e6d8, 0x40004419d0}, {0x2d9aad8?, 0x4001ae7148?}, {0x95e2ea0?, 0x40023768e0?})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/fd_unix.go:141 +0x544
net.(*netFD).dial(0x4000243d80, {0x966e6d8, 0x40004419d0}, {0x9681580?, 0x0?}, {0x9681580, 0x40010c5d40}, 0xe734fcc23028?)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/sock_posix.go:124 +0x300
net.socket({0x966e6d8, 0x40004419d0}, {0x8b5f6d8, 0x3}, 0x2, 0x1, 0x8b6040a?, 0x0, {0x9681580, 0x0}, ...)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/sock_posix.go:70 +0x214
net.internetSocket({0x966e6d8, 0x40004419d0}, {0x8b5f6d8, 0x3}, {0x9681580, 0x0}, {0x9681580, 0x40010c5d40}, 0x1, 0x0, ...)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/ipsock_posix.go:167 +0xa4
net.(*sysDialer).doDialTCPProto(0x40016ae600, {0x966e6d8, 0x40004419d0}, 0x0, 0x40010c5d40, 0x0)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/tcpsock_posix.go:85 +0xac
net.(*sysDialer).doDialTCP(...)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/tcpsock_posix.go:75
net.(*sysDialer).dialTCP(0xd2dcb4a?, {0x966e6d8?, 0x40004419d0?}, 0x2fecff4?, 0x4001ae7428?)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/tcpsock_posix.go:71 +0x70
net.(*sysDialer).dialSingle(0x40016ae600, {0x966e6d8, 0x40004419d0}, {0x9610b10, 0x40010c5d40})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/dial.go:721 +0x304
net.(*sysDialer).dialSerial(0x40016ae600, {0x966e6d8, 0x40004419d0}, {0x400292c6b0?, 0x1, 0xd2ded20?})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/dial.go:686 +0x1a0
net.(*sysDialer).dialParallel(0x0?, {0x966e6d8?, 0x40004419d0?}, {0x400292c6b0?, 0x81dd720?, 0x8b5f6d8?}, {0x0?, 0x4004ee6d50?, 0x13?})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/dial.go:587 +0x298
net.(*Dialer).DialContext(0x4000587200, {0x966e668, 0x4000343950}, {0x8b5f6d8, 0x3}, {0x4004ee6d50, 0x13})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/dial.go:578 +0x548
net/http.(*Transport).dial(0xffffffffffffffff?, {0x966e668?, 0x4000343950?}, {0x8b5f6d8?, 0x400181aa58?}, {0x4004ee6d50?, 0x400181ab38?})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/http/transport.go:1278 +0xdc
net/http.(*Transport).dialConn(0x400095b520, {0x966e668, 0x4000343950}, {{}, 0x0, {0x4001af2900, 0x5}, {0x4004ee6d50, 0x13}, 0x0})
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/http/transport.go:1783 +0x608
net/http.(*Transport).dialConnFor(0x400095b520, 0x400092edc0)
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/http/transport.go:1618 +0x8c
net/http.(*Transport).startDialConnForLocked.func1()
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/http/transport.go:1600 +0x34
created by net/http.(*Transport).startDialConnForLocked in goroutine 4342
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/http/transport.go:1599 +0x114
Goroutine 4756 in state select, with net.(*netFD).connect.func2 on top of the stack:
net.(*netFD).connect.func2()
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/fd_unix.go:118 +0x70
created by net.(*netFD).connect in goroutine 4755
/opt/buildkite-agent/.asdf/installs/golang/1.24.9/go/src/net/fd_unix.go:117 +0x298
]
```
It was later fixed by https://github.com/elastic/beats/pull/47573.
It is not clear whether the fix was the added call to `client.CloseIdleConnections()` or the additional goroutines added to the ignore list.
This error only happens after the PR is merged and only on Ubuntu ARM, so it is hard to test without merging the change first, which could break CI on main. To verify whether we can stop skipping HTTP-related goroutines in the leak detector, we have to test by using an Ubuntu arm64 VM. Remove the HTTP-related goroutines from [the list](https://github.com/elastic/beats/blob/1b5ef27/libbeat/otelbeat/oteltest/oteltest.go#L231-L234) and check whether `TestMultipleReceivers`/`TestReceiverDegraded` still reports them. They might no longer be needed. If they are not needed anymore, confirm by removing the call to `client.CloseIdleConnections()` and see whether they are reported again.
```bash
./script/stresstest.sh ./x-pack/filebeat/fbreceiver ^TestMultipleReceivers$ -p 128
./script/stresstest.sh ./x-pack/filebeat/fbreceiver ^TestReceiverDegraded$ -p 128
```
Contributor guide
Research direction
Start with x-pack/filebeat/fbreceiver TestMultipleReceivers and the leak report location oteltest.go:239; reproduce the failure in the referenced Ubuntu arm64 Unit Tests job. Determine whether the reported HTTP transport goroutines are expected during the test, and confirm that the completed change no longer produces these failures without masking unrelated leaks.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- testing-qa
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100