From 3bf0ae995adef552d6dc1ba6d8fbfd6269f1ca89 Mon Sep 17 00:00:00 2001 From: Mahmood Ali Date: Fri, 13 Sep 2019 13:59:36 -0400 Subject: [PATCH] docker: explicit grace period for initial container reconcilation Ensure we wait for some grace period before killing docker containers that may have launched in earlier nomad restore. --- drivers/docker/reconciler.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/docker/reconciler.go b/drivers/docker/reconciler.go index 0753c50eb..77d0eabb1 100644 --- a/drivers/docker/reconciler.go +++ b/drivers/docker/reconciler.go @@ -20,7 +20,17 @@ func (d *Driver) removeDanglingContainersGoroutine() { succeeded := true - timer := time.NewTimer(period) + // ensure that we wait for at least a period or creation timeout + // for first container GC iteration + // The initial period is a grace period for restore allocation + // before a driver may kill containers launched by an earlier nomad + // process. + initialDelay := period + if d.config.GC.DanglingContainers.creationTimeout > initialDelay { + initialDelay = d.config.GC.DanglingContainers.creationTimeout + } + + timer := time.NewTimer(initialDelay) for { select { case <-timer.C: