Commit 6211cd20 authored by Mitchell Hashimoto's avatar Mitchell Hashimoto

builder/vmware: more resilient to racing deletes [GH-675]

parent b79506e6
...@@ -18,6 +18,8 @@ BUG FIXES: ...@@ -18,6 +18,8 @@ BUG FIXES:
so that building AMIs works out of us-east-1 [GH-679] so that building AMIs works out of us-east-1 [GH-679]
* builder/vmware: Cleanup of VMX keys works properly so cd-rom won't * builder/vmware: Cleanup of VMX keys works properly so cd-rom won't
get stuck with ISO. [GH-685] get stuck with ISO. [GH-685]
* builder/vmware: File cleanup is more resilient to file delete races
with the operating system. [GH-675]
## 0.4.0 (November 19, 2013) ## 0.4.0 (November 19, 2013)
......
...@@ -4,6 +4,7 @@ import ( ...@@ -4,6 +4,7 @@ import (
"fmt" "fmt"
"github.com/mitchellh/multistep" "github.com/mitchellh/multistep"
"github.com/mitchellh/packer/packer" "github.com/mitchellh/packer/packer"
"os"
"path/filepath" "path/filepath"
) )
...@@ -48,8 +49,11 @@ func (stepCleanFiles) Run(state multistep.StateBag) multistep.StepAction { ...@@ -48,8 +49,11 @@ func (stepCleanFiles) Run(state multistep.StateBag) multistep.StepAction {
if !keep { if !keep {
ui.Message(fmt.Sprintf("Deleting: %s", path)) ui.Message(fmt.Sprintf("Deleting: %s", path))
if err = dir.Remove(path); err != nil { if err = dir.Remove(path); err != nil {
state.Put("error", err) // Only report the error if the file still exists
return multistep.ActionHalt if _, serr := os.Stat(path); serr == nil || os.IsNotExist(serr) {
state.Put("error", err)
return multistep.ActionHalt
}
} }
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment