From 90cd50b597e943a3f31de32b15efdc4ebc95ab03 Mon Sep 17 00:00:00 2001 From: Alex Dadgar Date: Mon, 27 Feb 2017 20:23:21 -0800 Subject: [PATCH] Delete on increment and add a safety guard --- client/driver/docker_coordinator.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/client/driver/docker_coordinator.go b/client/driver/docker_coordinator.go index 6363d2ca3..c05d3a64f 100644 --- a/client/driver/docker_coordinator.go +++ b/client/driver/docker_coordinator.go @@ -203,6 +203,7 @@ func (d *dockerCoordinator) IncrementImageReference(id, image string) { if cancel, ok := d.deleteFuture[id]; ok { d.logger.Printf("[DEBUG] driver.docker: cancelling removal of image %q", image) cancel() + delete(d.deleteFuture, id) } d.imageLock.Unlock() } @@ -229,6 +230,13 @@ func (d *dockerCoordinator) RemoveImage(id string) { return } + // This should never be the case but we safefty guard so we don't leak a + // cancel. + if cancel, ok := d.deleteFuture[id]; ok { + d.logger.Printf("[ERR] driver.docker: image id %q has lingering delete future", id) + cancel() + } + // Setup a future to delete the image ctx, cancel := context.WithCancel(context.Background()) d.deleteFuture[id] = cancel