Skip to content

Commit b966acc

Browse files
committed
feat: soft affinity for retry
Signed-off-by: Tianchu Zhao <[email protected]>
1 parent 43ccc1f commit b966acc

File tree

1 file changed

+25
-27
lines changed

1 file changed

+25
-27
lines changed

workflow/util/retry/retry.go

+25-27
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,14 @@ func AddHostnamesToAffinity(hostSelector string, hostNames []string, targetAffin
5555
Values: hostNames,
5656
}
5757

58+
const affinityWeight = 50
59+
5860
sourceAffinity := &apiv1.Affinity{
5961
NodeAffinity: &apiv1.NodeAffinity{
60-
RequiredDuringSchedulingIgnoredDuringExecution: &apiv1.NodeSelector{
61-
NodeSelectorTerms: []apiv1.NodeSelectorTerm{
62-
{
62+
PreferredDuringSchedulingIgnoredDuringExecution: []apiv1.PreferredSchedulingTerm{
63+
{
64+
Weight: affinityWeight,
65+
Preference: apiv1.NodeSelectorTerm{
6366
MatchExpressions: []apiv1.NodeSelectorRequirement{
6467
nodeSelectorRequirement,
6568
},
@@ -79,43 +82,38 @@ func AddHostnamesToAffinity(hostSelector string, hostNames []string, targetAffin
7982
return targetAffinity
8083
}
8184

82-
targetExecution := targetAffinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution
83-
sourceExecution := sourceAffinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution
85+
targetExecution := targetAffinity.NodeAffinity.PreferredDuringSchedulingIgnoredDuringExecution
8486

8587
if targetExecution == nil {
86-
targetAffinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution =
87-
sourceAffinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution
88+
targetAffinity.NodeAffinity.PreferredDuringSchedulingIgnoredDuringExecution =
89+
sourceAffinity.NodeAffinity.PreferredDuringSchedulingIgnoredDuringExecution
8890
return targetAffinity
8991
}
9092

91-
if len(targetExecution.NodeSelectorTerms) == 0 {
92-
targetAffinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution.NodeSelectorTerms =
93-
sourceAffinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution.NodeSelectorTerms
93+
if len(targetExecution) == 0 {
94+
targetAffinity.NodeAffinity.PreferredDuringSchedulingIgnoredDuringExecution =
95+
sourceAffinity.NodeAffinity.PreferredDuringSchedulingIgnoredDuringExecution
9496
return targetAffinity
9597
}
9698

9799
// find if specific NodeSelectorTerm exists and append
98-
for i := range targetExecution.NodeSelectorTerms {
99-
if len(targetExecution.NodeSelectorTerms[i].MatchExpressions) == 0 {
100-
targetExecution.NodeSelectorTerms[i].MatchExpressions =
101-
append(targetExecution.NodeSelectorTerms[i].MatchExpressions, sourceExecution.NodeSelectorTerms[0].MatchExpressions[0])
102-
return targetAffinity
103-
}
104-
105-
for j := range targetExecution.NodeSelectorTerms[i].MatchExpressions {
106-
if targetExecution.NodeSelectorTerms[i].MatchExpressions[j].Key == hostSelector &&
107-
targetExecution.NodeSelectorTerms[i].MatchExpressions[j].Operator == apiv1.NodeSelectorOpNotIn {
108-
targetExecution.NodeSelectorTerms[i].MatchExpressions[j].Values =
109-
append(targetExecution.NodeSelectorTerms[i].MatchExpressions[j].Values, hostNames...)
110-
targetExecution.NodeSelectorTerms[i].MatchExpressions[j].Values =
111-
RemoveDuplicates(targetExecution.NodeSelectorTerms[i].MatchExpressions[j].Values)
112-
return targetAffinity
100+
for i := range targetExecution {
101+
if targetExecution[i].Weight == affinityWeight {
102+
for j := range targetExecution[i].Preference.MatchExpressions {
103+
if targetExecution[i].Preference.MatchExpressions[j].Key == hostSelector &&
104+
targetExecution[i].Preference.MatchExpressions[j].Operator == apiv1.NodeSelectorOpNotIn {
105+
targetExecution[i].Preference.MatchExpressions[j].Values =
106+
append(targetExecution[i].Preference.MatchExpressions[j].Values, hostNames...)
107+
targetExecution[i].Preference.MatchExpressions[j].Values =
108+
RemoveDuplicates(targetExecution[i].Preference.MatchExpressions[j].Values)
109+
return targetAffinity
110+
}
113111
}
114112
}
115113
}
116114

117-
targetExecution.NodeSelectorTerms[0].MatchExpressions =
118-
append(targetExecution.NodeSelectorTerms[0].MatchExpressions, nodeSelectorRequirement)
115+
targetAffinity.NodeAffinity.PreferredDuringSchedulingIgnoredDuringExecution =
116+
append(targetAffinity.NodeAffinity.PreferredDuringSchedulingIgnoredDuringExecution, sourceAffinity.NodeAffinity.PreferredDuringSchedulingIgnoredDuringExecution[0])
119117

120118
return targetAffinity
121119
}

0 commit comments

Comments
 (0)