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