1
0
Fork 0
mirror of https://github.com/arangodb/kube-arangodb.git synced 2024-12-14 11:57:37 +00:00

[Bugfix] Use Rendered Spec in case of scheduling compare (#1640)

This commit is contained in:
Adam Janikowski 2024-04-08 10:14:49 +02:00 committed by GitHub
parent f5c362eba7
commit a4d7331a0c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 22 additions and 22 deletions

View file

@ -19,6 +19,7 @@
- (Feature) Scheduler BatchJob Integration Service
- (Maintenance) Update Go to 1.22.2
- (Feature) Object Checksum
- (Bugfix) Use Rendered Spec in case of scheduling compare
## [1.2.39](https://github.com/arangodb/kube-arangodb/tree/1.2.39) (2024-03-11)
- (Feature) Extract Scheduler API

View file

@ -1,7 +1,7 @@
//
// DISCLAIMER
//
// Copyright 2023 ArangoDB GmbH, Cologne, Germany
// Copyright 2023-2024 ArangoDB GmbH, Cologne, Germany
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -67,33 +67,32 @@ func (r *Reconciler) createMemberPodSchedulingFailurePlan(ctx context.Context,
continue
}
if r.isSchedulingParametersChanged(renderedPod.Spec, m.Member, context) {
l.Info("Adding KillMemberPod action: scheduling failed and parameters already updated")
p = append(p,
actions.NewAction(api.ActionTypeKillMemberPod, m.Group, m.Member, "Scheduling failed"),
)
cache, ok := context.ACS().ClusterCache(m.Member.ClusterID)
if !ok {
continue
}
memberName := m.Member.ArangoMemberName(context.GetName(), m.Group)
member, ok := cache.ArangoMember().V1().GetSimple(memberName)
if !ok {
continue
}
if template := member.Spec.Template; template != nil {
if pod := template.PodSpec; pod != nil {
if !r.schedulingParametersAreTheSame(renderedPod.Spec, pod.Spec) {
l.Info("Adding KillMemberPod action: scheduling failed and parameters already updated")
p = append(p,
actions.NewAction(api.ActionTypeKillMemberPod, m.Group, m.Member, "Scheduling failed"),
)
}
}
}
}
return p
}
// isSchedulingParametersChanged returns true if parameters related to pod scheduling has changed
func (r *Reconciler) isSchedulingParametersChanged(expectedSpec core.PodSpec, member api.MemberStatus, context PlanBuilderContext) bool {
cache, ok := context.ACS().ClusterCache(member.ClusterID)
if !ok {
return false
}
pod, ok := cache.Pod().V1().GetSimple(member.Pod.GetName())
if !ok {
return false
}
if r.schedulingParametersAreTheSame(expectedSpec, pod.Spec) {
return false
}
return true
}
func (r *Reconciler) schedulingParametersAreTheSame(expectedSpec, actualSpec core.PodSpec) bool {
if expectedSpec.PriorityClassName != actualSpec.PriorityClassName {
return false