The update of an ingress status by a given feed pod F1 is a get-modify-set operation, where another feed instance F2 may potentially complete the set operation while F1 is still at the modify stage.
What this means is that when F1 comes to do its set operation, it will get back from the API server a "409 Conflict" response, indicating that someone else has modified the resource after F1 fetched it.
This change makes the update routine a little more resilient. If a feed pod receives a conflict response back when it attempts to update the status, it will perform a second get operation, and compare the status on the returned object with the status it wanted to set. If these are equal, it will not return any error.
In the case where the status on the returned object is not equal to the value it wanted to set, it will surface the error exactly as it does right now. Likewise, if the error is anything other than a conflict, it
will be returned exactly as it is at the moment.
The update of an ingress status by a given feed pod F1 is a get-modify-set operation, where another feed instance F2 may potentially complete the set operation while F1 is still at the modify stage.
What this means is that when F1 comes to do its set operation, it will get back from the API server a "409 Conflict" response, indicating that someone else has modified the resource after F1 fetched it.
This change makes the update routine a little more resilient. If a feed pod receives a conflict response back when it attempts to update the status, it will perform a second get operation, and compare the status on the returned object with the status it wanted to set. If these are equal, it will not return any error.
In the case where the status on the returned object is not equal to the value it wanted to set, it will surface the error exactly as it does right now. Likewise, if the error is anything other than a conflict, it will be returned exactly as it is at the moment.