Skip to content

Commit 06f2d66

Browse files
com6056zachaller
authored andcommitted
fix: check ephemeral metadata is set before delete (#4089)
* fix: check ephemeral metadata is set before delete Signed-off-by: Jordan Rodgers <[email protected]> * add test case Signed-off-by: Jordan Rodgers <[email protected]> * address test comments Signed-off-by: Jordan Rodgers <[email protected]> --------- Signed-off-by: Jordan Rodgers <[email protected]>
1 parent 8a4a81a commit 06f2d66

File tree

2 files changed

+25
-14
lines changed

2 files changed

+25
-14
lines changed

utils/replicaset/canary.go

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -640,18 +640,26 @@ func SyncEphemeralPodMetadata(metadata *metav1.ObjectMeta, existingPodMetadata,
640640
if existingPodMetadata != nil {
641641
for k := range existingPodMetadata.Annotations {
642642
if desiredPodMetadata == nil || !isMetadataStillDesired(k, desiredPodMetadata.Annotations) {
643-
if metadata.Annotations != nil {
644-
delete(metadata.Annotations, k)
645-
modified = true
643+
if metadata.Annotations == nil {
644+
continue
646645
}
646+
if _, ok := metadata.Annotations[k]; !ok {
647+
continue
648+
}
649+
delete(metadata.Annotations, k)
650+
modified = true
647651
}
648652
}
649653
for k := range existingPodMetadata.Labels {
650654
if desiredPodMetadata == nil || !isMetadataStillDesired(k, desiredPodMetadata.Labels) {
651-
if metadata.Labels != nil {
652-
delete(metadata.Labels, k)
653-
modified = true
655+
if metadata.Labels == nil {
656+
continue
654657
}
658+
if _, ok := metadata.Labels[k]; !ok {
659+
continue
660+
}
661+
delete(metadata.Labels, k)
662+
modified = true
655663
}
656664
}
657665
}

utils/replicaset/canary_test.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1339,14 +1339,19 @@ func TestSyncEphemeralPodMetadata(t *testing.T) {
13391339
"ddd": "444",
13401340
},
13411341
}
1342-
{
1343-
// verify modified is false if there are no changes
1342+
t.Run("verify modified is false if there are no changes", func(t *testing.T) {
13441343
newMetadata, modified := SyncEphemeralPodMetadata(&meta, &existing, &existing)
13451344
assert.False(t, modified)
13461345
assert.Equal(t, meta, *newMetadata)
1347-
}
1348-
{
1349-
// verify we don't touch metadata that we did not inject ourselves
1346+
})
1347+
t.Run("verify modified is false if there are no actual deletions", func(t *testing.T) {
1348+
existingWithExtraLabel := existing.DeepCopy()
1349+
existingWithExtraLabel.Labels["foo"] = "bar"
1350+
newMetadata, modified := SyncEphemeralPodMetadata(&meta, existingWithExtraLabel, &existing)
1351+
assert.False(t, modified)
1352+
assert.Equal(t, meta, *newMetadata)
1353+
})
1354+
t.Run("verify we don't touch metadata that we did not inject ourselves", func(t *testing.T) {
13501355
desired := v1alpha1.PodTemplateMetadata{
13511356
Labels: map[string]string{
13521357
"aaa": "222",
@@ -1356,7 +1361,6 @@ func TestSyncEphemeralPodMetadata(t *testing.T) {
13561361
},
13571362
}
13581363
newMetadata, modified := SyncEphemeralPodMetadata(&meta, &existing, &desired)
1359-
assert.True(t, modified)
13601364
expected := metav1.ObjectMeta{
13611365
Labels: map[string]string{
13621366
"aaa": "222",
@@ -1369,8 +1373,7 @@ func TestSyncEphemeralPodMetadata(t *testing.T) {
13691373
}
13701374
assert.True(t, modified)
13711375
assert.Equal(t, expected, *newMetadata)
1372-
}
1373-
1376+
})
13741377
}
13751378

13761379
func TestGetReplicasForScaleDown(t *testing.T) {

0 commit comments

Comments
 (0)