Skip to content

Commit 1765c4c

Browse files
Merge pull request kubernetes#18331 from mfojtik/pick-57854
Automatic merge from submit-queue (batch tested with PRs 18225, 18351, 18331, 18340, 18326). UPSTREAM: 57854: fix bug of swallowing missing merge key error fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1529659 Origin-commit: db03c4980ab2a7c4d1cd85ca0cf9bb1b3e5411d7
2 parents ce67de7 + eb330ee commit 1765c4c

File tree

2 files changed

+27
-12
lines changed

2 files changed

+27
-12
lines changed

staging/src/k8s.io/apimachinery/pkg/util/strategicpatch/patch.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1322,23 +1322,23 @@ func mergeMap(original, patch map[string]interface{}, schema LookupPatchMeta, me
13221322
// If they're both maps or lists, recurse into the value.
13231323
switch originalType.Kind() {
13241324
case reflect.Map:
1325-
subschema, patchMeta, err := schema.LookupPatchMetadataForStruct(k)
1326-
if err != nil {
1327-
return nil, err
1325+
subschema, patchMeta, err2 := schema.LookupPatchMetadataForStruct(k)
1326+
if err2 != nil {
1327+
return nil, err2
13281328
}
1329-
_, patchStrategy, err := extractRetainKeysPatchStrategy(patchMeta.GetPatchStrategies())
1330-
if err != nil {
1331-
return nil, err
1329+
_, patchStrategy, err2 := extractRetainKeysPatchStrategy(patchMeta.GetPatchStrategies())
1330+
if err2 != nil {
1331+
return nil, err2
13321332
}
13331333
original[k], err = mergeMapHandler(original[k], patchV, subschema, patchStrategy, mergeOptions)
13341334
case reflect.Slice:
1335-
subschema, patchMeta, err := schema.LookupPatchMetadataForSlice(k)
1336-
if err != nil {
1337-
return nil, err
1335+
subschema, patchMeta, err2 := schema.LookupPatchMetadataForSlice(k)
1336+
if err2 != nil {
1337+
return nil, err2
13381338
}
1339-
_, patchStrategy, err := extractRetainKeysPatchStrategy(patchMeta.GetPatchStrategies())
1340-
if err != nil {
1341-
return nil, err
1339+
_, patchStrategy, err2 := extractRetainKeysPatchStrategy(patchMeta.GetPatchStrategies())
1340+
if err2 != nil {
1341+
return nil, err2
13421342
}
13431343
original[k], err = mergeSliceHandler(original[k], patchV, subschema, patchStrategy, patchMeta.GetPatchMergeKey(), isDeleteList, mergeOptions)
13441344
default:

staging/src/k8s.io/apimachinery/pkg/util/strategicpatch/patch_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,21 @@ mergingIntList:
654654
ExpectedError: "doesn't match",
655655
},
656656
},
657+
{
658+
Description: "missing merge key should error out",
659+
StrategicMergePatchRawTestCaseData: StrategicMergePatchRawTestCaseData{
660+
Original: []byte(`
661+
mergingList:
662+
- name: 1
663+
value: a
664+
`),
665+
TwoWay: []byte(`
666+
mergingList:
667+
- value: b
668+
`),
669+
ExpectedError: "does not contain declared merge key",
670+
},
671+
},
657672
}
658673

659674
func TestCustomStrategicMergePatch(t *testing.T) {

0 commit comments

Comments
 (0)