prevent panics when encountering nil diffs
While we can't change the behavior of helper/schema at this point, we can protect against panics in the case of unexpected nils in the instance diff.
This commit is contained in:
parent
481b25b5d2
commit
a94f5ee132
|
@ -47,6 +47,8 @@ func TestDiffApply_set(t *testing.T) {
|
||||||
"egress.746197026.security_groups.#": {Old: "", New: "0", NewComputed: false, NewRemoved: false},
|
"egress.746197026.security_groups.#": {Old: "", New: "0", NewComputed: false, NewRemoved: false},
|
||||||
"egress.746197026.self": {Old: "", New: "false", NewComputed: false, NewRemoved: false},
|
"egress.746197026.self": {Old: "", New: "false", NewComputed: false, NewRemoved: false},
|
||||||
"egress.746197026.to_port": {Old: "", New: "8000", NewComputed: false, NewRemoved: false},
|
"egress.746197026.to_port": {Old: "", New: "8000", NewComputed: false, NewRemoved: false},
|
||||||
|
// an erroneous nil diff should do nothing
|
||||||
|
"egress.111111111.to_port": nil,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -513,6 +513,12 @@ func (d *InstanceDiff) applyBlockDiff(path []string, attrs map[string]string, sc
|
||||||
}
|
}
|
||||||
|
|
||||||
for k, diff := range d.Attributes {
|
for k, diff := range d.Attributes {
|
||||||
|
// helper/schema should not insert nil diff values, but don't panic
|
||||||
|
// if it does.
|
||||||
|
if diff == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
if strings.HasPrefix(k, blockKey) {
|
if strings.HasPrefix(k, blockKey) {
|
||||||
nextDot := strings.Index(k[len(blockKey):], ".")
|
nextDot := strings.Index(k[len(blockKey):], ".")
|
||||||
if nextDot < 0 {
|
if nextDot < 0 {
|
||||||
|
@ -539,6 +545,12 @@ func (d *InstanceDiff) applyBlockDiff(path []string, attrs map[string]string, sc
|
||||||
// that we're dropping. Since we're only applying the "New"
|
// that we're dropping. Since we're only applying the "New"
|
||||||
// portion of the set, we can ignore diffs that only contain "Old"
|
// portion of the set, we can ignore diffs that only contain "Old"
|
||||||
for attr, diff := range d.Attributes {
|
for attr, diff := range d.Attributes {
|
||||||
|
// helper/schema should not insert nil diff values, but don't panic
|
||||||
|
// if it does.
|
||||||
|
if diff == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
if !strings.HasPrefix(attr, indexPrefix) {
|
if !strings.HasPrefix(attr, indexPrefix) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue