From 53ef6391a566720e93c3a8926bc5d21ec98acdb1 Mon Sep 17 00:00:00 2001 From: Piotr Kazmierczak <470696+pkazmierczak@users.noreply.github.com> Date: Thu, 17 Aug 2023 14:45:31 +0200 Subject: [PATCH] drivers/docker: fix a hostConfigMemorySwappiness panic (#18238) cgroupslib.MaybeDisableMemorySwappiness returned an incorrect type, and was incorrectly typecast to int64 causing a panic on non-linux and non-windows hosts. --- client/lib/cgroupslib/default.go | 2 +- drivers/docker/driver.go | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/client/lib/cgroupslib/default.go b/client/lib/cgroupslib/default.go index 8c8d277e0..12376bc95 100644 --- a/client/lib/cgroupslib/default.go +++ b/client/lib/cgroupslib/default.go @@ -11,6 +11,6 @@ func LinuxResourcesPath(string, string) string { } // MaybeDisableMemorySwappiness does nothing on non-Linux systems -func MaybeDisableMemorySwappiness() *int { +func MaybeDisableMemorySwappiness() *uint64 { return nil } diff --git a/drivers/docker/driver.go b/drivers/docker/driver.go index 13f873c74..cf4dfb190 100644 --- a/drivers/docker/driver.go +++ b/drivers/docker/driver.go @@ -33,6 +33,7 @@ import ( "github.com/hashicorp/nomad/drivers/shared/hostnames" "github.com/hashicorp/nomad/drivers/shared/resolvconf" "github.com/hashicorp/nomad/helper" + "github.com/hashicorp/nomad/helper/pointer" nstructs "github.com/hashicorp/nomad/nomad/structs" "github.com/hashicorp/nomad/plugins/base" "github.com/hashicorp/nomad/plugins/drivers" @@ -1035,8 +1036,11 @@ func (d *Driver) createContainerConfig(task *drivers.TaskConfig, driverConfig *T hostConfig.MemorySwap = memory // disable swap explicitly in non-Windows environments - swappiness := int64(*(cgroupslib.MaybeDisableMemorySwappiness())) - hostConfig.MemorySwappiness = &swappiness + if cgroupslib.MaybeDisableMemorySwappiness() != nil { + hostConfig.MemorySwappiness = pointer.Of(int64(*(cgroupslib.MaybeDisableMemorySwappiness()))) + } else { + hostConfig.MemorySwappiness = nil + } } loggingDriver := driverConfig.Logging.Type