@@ -50,8 +50,10 @@ func (r *Reconciler) createMemberPodSchedulingFailurePlan(ctx context.Context,
5050 return p
5151 }
5252
53+ q := r .log .Str ("step" , "CreateMemberPodSchedulingFailurePlan" )
54+
5355 for _ , m := range status .Members .AsList () {
54- l := r . log .Str ("id" , m .Member .ID ).Str ("role" , m .Group .AsRole ())
56+ l := q .Str ("id" , m .Member .ID ).Str ("role" , m .Group .AsRole ())
5557
5658 if m .Member .Phase != api .MemberPhaseCreated || m .Member .Pod .GetName () == "" {
5759 // Act only when phase is created
@@ -65,48 +67,54 @@ func (r *Reconciler) createMemberPodSchedulingFailurePlan(ctx context.Context,
6567
6668 if c , ok := m .Member .Conditions .Get (api .ConditionTypeScheduled ); ! ok {
6769 // Action cant proceed if pod is not scheduled
70+ l .Debug ("Unable to find scheduled condition" )
6871 continue
6972 } else if c .LastTransitionTime .IsZero () {
7073 // LastTransitionTime is not set
74+ l .Debug ("Scheduled condition LastTransitionTime is zero" )
7175 continue
7276 } else {
73- if time .Since (c .LastTransitionTime .Time ) <= globals .GetGlobalTimeouts ().PodSchedulingGracePeriod ().Get () {
77+ if d := time .Since (c .LastTransitionTime .Time ); d <= globals .GetGlobalTimeouts ().PodSchedulingGracePeriod ().Get () {
7478 // In grace period
79+ l .Dur ("since" , d ).Debug ("Still in grace period" )
7580 continue
7681 }
7782 }
7883
79- imageInfo , imageFound := context .SelectImageForMember (spec , status , m .Member )
80- if ! imageFound {
81- l .Warn ("could not find image for already created member" )
82- continue
83- }
84-
85- renderedPod , err := context .RenderPodForMember (ctx , context .ACS (), spec , status , m .Member .ID , imageInfo )
86- if err != nil {
87- l .Err (err ).Warn ("could not render pod for already created member" )
88- continue
89- }
90-
9184 cache , ok := context .ACS ().ClusterCache (m .Member .ClusterID )
9285 if ! ok {
86+ l .Warn ("Unable to get member name" )
9387 continue
9488 }
9589
9690 memberName := m .Member .ArangoMemberName (context .GetName (), m .Group )
9791 member , ok := cache .ArangoMember ().V1 ().GetSimple (memberName )
9892 if ! ok {
93+ l .Warn ("Unable to get ArangoMember" )
9994 continue
10095 }
10196
102- if template := member .Spec .Template ; template != nil {
103- if pod := template .PodSpec ; pod != nil {
104- if ! r .schedulingParametersAreTheSame (renderedPod .Spec , pod .Spec ) {
105- l .Info ("Adding KillMemberPod action: scheduling failed and parameters already updated" )
106- p = append (p ,
107- actions .NewAction (api .ActionTypeKillMemberPod , m .Group , m .Member , "Scheduling failed" ),
108- )
97+ if m .Member .Conditions .IsTrue (api .ConditionTypeScheduleSpecChanged ) {
98+ l .Info ("Adding KillMemberPod action: scheduling failed and scheduling changed condition is present" )
99+ p = append (p ,
100+ actions .NewAction (api .ActionTypeKillMemberPod , m .Group , m .Member , "Scheduling failed" ),
101+ )
102+ } else {
103+ if statusTemplate , specTemplate := member .Status .Template , member .Spec .Template ; statusTemplate != nil && specTemplate != nil {
104+ if statusTemplateSpec , specTemplateSpec := statusTemplate .PodSpec , specTemplate .PodSpec ; statusTemplateSpec != nil && specTemplateSpec != nil {
105+ if ! r .schedulingParametersAreTheSame (specTemplateSpec .Spec , statusTemplateSpec .Spec ) {
106+ l .Info ("Adding KillMemberPod action: scheduling failed and parameters already updated" )
107+ p = append (p ,
108+ actions .NewAction (api .ActionTypeKillMemberPod , m .Group , m .Member , "Scheduling failed" ),
109+ )
110+ } else {
111+ l .Info ("Scheduling parameters are not updated" )
112+ }
113+ } else {
114+ l .Warn ("Pod TemplateSpec is nil" )
109115 }
116+ } else {
117+ l .Warn ("Pod Template is nil" )
110118 }
111119 }
112120 }
0 commit comments