@@ -61,6 +61,10 @@ type (
6161 GetNode (context.Context , string ) (* v1.Node , error )
6262 }
6363
64+ NodeGetterBuilder interface {
65+ NewNodeGetter (* v1alpha1.Terminator ) NodeGetter
66+ }
67+
6468 NodeNameGetter interface {
6569 GetNodeName (context.Context , string ) (string , error )
6670 }
7983 }
8084
8185 Reconciler struct {
82- NodeGetter
86+ NodeGetterBuilder
8387 NodeNameGetter
8488 SQSClientBuilder
8589 SQSMessageParser
@@ -102,6 +106,8 @@ func (r Reconciler) Reconcile(ctx context.Context, req reconcile.Request) (recon
102106 return reconcile.Result {}, nil
103107 }
104108
109+ nodeGetter := r .NewNodeGetter (terminator )
110+
105111 cordondrainer , err := r .NewCordonDrainer (terminator )
106112 if err != nil {
107113 return reconcile.Result {}, err
@@ -126,6 +132,7 @@ func (r Reconciler) Reconcile(ctx context.Context, req reconcile.Request) (recon
126132 evt := r .Parse (ctx , msg )
127133 ctx = logging .WithLogger (ctx , logging .FromContext (ctx ).With ("event" , evt ))
128134
135+ allInstancesHandled := true
129136 savedCtx := ctx
130137 for _ , ec2InstanceID := range evt .EC2InstanceIDs () {
131138 ctx = logging .WithLogger (savedCtx , logging .FromContext (savedCtx ).
@@ -135,14 +142,20 @@ func (r Reconciler) Reconcile(ctx context.Context, req reconcile.Request) (recon
135142 nodeName , e := r .GetNodeName (ctx , ec2InstanceID )
136143 if e != nil {
137144 err = multierr .Append (err , e )
145+ allInstancesHandled = false
138146 continue
139147 }
140148
141149 ctx = logging .WithLogger (ctx , logging .FromContext (ctx ).With ("node" , nodeName ))
142150
143- node , e := r .GetNode (ctx , nodeName )
144- if e != nil {
145- err = multierr .Append (err , e )
151+ node , e := nodeGetter .GetNode (ctx , nodeName )
152+ if node == nil {
153+ logger := logging .FromContext (ctx )
154+ if e != nil {
155+ logger = logger .With ("error" , e )
156+ }
157+ logger .Warn ("no matching node found" )
158+ allInstancesHandled = false
146159 continue
147160 }
148161
@@ -163,7 +176,7 @@ func (r Reconciler) Reconcile(ctx context.Context, req reconcile.Request) (recon
163176 err = multierr .Append (err , e )
164177 }
165178
166- if tryAgain {
179+ if tryAgain || ! allInstancesHandled {
167180 continue
168181 }
169182
0 commit comments