diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index bdbe20b4406..f8de68c1a6c 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -55,6 +55,7 @@ https://github.com/elastic/beats/compare/v8.2.0\...main[Check the HEAD diff] - Fix counter for number of events published in `httpjson` input. {pull}31993[31993] - Fix handling of Checkpoint event for R81. {issue}32380[32380] {pull}32458[32458] +- Fix a hang on `apt-get update` stage in packaging. {pull}32580[32580] *Heartbeat* diff --git a/dev-tools/mage/crossbuild.go b/dev-tools/mage/crossbuild.go index 811b0c9a6b3..47e24d45a2d 100644 --- a/dev-tools/mage/crossbuild.go +++ b/dev-tools/mage/crossbuild.go @@ -296,6 +296,15 @@ func (b GolangCrossBuilder) Build() error { verbose = "true" } var args []string + // There's a bug on certain debian versions: + // https://discuss.linuxcontainers.org/t/debian-jessie-containers-have-extremely-low-performance/1272 + // basically, apt-get has a bug where will try to iterate through every possible FD as set by the NOFILE ulimit. + // On certain docker installs, docker will set the ulimit to a value > 10^9, which means apt-get will take >1 hour. + // This runs across all possible debian platforms, since there's no real harm in it. + if strings.Contains(b.Platform, "debian") { + args = append(args, "--ulimit", "nofile=262144:262144") + } + if runtime.GOOS != "windows" { args = append(args, "--env", "EXEC_UID="+strconv.Itoa(os.Getuid()),