Merge pull request #522 from patricklucas/fix_instance_not_found_race

builder/amzon: fix race condition after launching EC2 instance
This commit is contained in:
Mitchell Hashimoto 2013-10-14 01:45:55 -07:00
commit 26b6e27917
1 changed files with 8 additions and 3 deletions

View File

@ -62,11 +62,16 @@ func InstanceStateRefreshFunc(conn *ec2.EC2, i *ec2.Instance) StateRefreshFunc {
return func() (interface{}, string, error) { return func() (interface{}, string, error) {
resp, err := conn.Instances([]string{i.InstanceId}, ec2.NewFilter()) resp, err := conn.Instances([]string{i.InstanceId}, ec2.NewFilter())
if err != nil { if err != nil {
log.Printf("Error on InstanceStateRefresh: %s", err) if ec2err, ok := err.(*ec2.Error); ok && ec2err.Code == "InvalidInstanceID.NotFound" {
return nil, "", err // Set this to nil as if we didn't find anything.
resp = nil
} else {
log.Printf("Error on InstanceStateRefresh: %s", err)
return nil, "", err
}
} }
if len(resp.Reservations) == 0 || len(resp.Reservations[0].Instances) == 0 { if resp == nil || len(resp.Reservations) == 0 || len(resp.Reservations[0].Instances) == 0 {
// Sometimes AWS just has consistency issues and doesn't see // Sometimes AWS just has consistency issues and doesn't see
// our instance yet. Return an empty state. // our instance yet. Return an empty state.
return nil, "", nil return nil, "", nil