fix(remote): Support partial remote instance failure (#990)
Failing remotes allowed and logged Co-authored-by: Oleh Rakovych <oleh@amberoad.ai>
This commit is contained in:
parent
9d8928dee0
commit
ea2b7c4bdf
@ -59,12 +59,14 @@ func getEndpointStatusesFromRemoteInstances(remoteConfig *remote.Config) ([]*end
|
|||||||
for _, instance := range remoteConfig.Instances {
|
for _, instance := range remoteConfig.Instances {
|
||||||
response, err := httpClient.Get(instance.URL)
|
response, err := httpClient.Get(instance.URL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
// Log the error but continue with other instances
|
||||||
|
logr.Errorf("[api.getEndpointStatusesFromRemoteInstances] Failed to retrieve endpoint statuses from %s: %s", instance.URL, err.Error())
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
var endpointStatuses []*endpoint.Status
|
var endpointStatuses []*endpoint.Status
|
||||||
if err = json.NewDecoder(response.Body).Decode(&endpointStatuses); err != nil {
|
if err = json.NewDecoder(response.Body).Decode(&endpointStatuses); err != nil {
|
||||||
_ = response.Body.Close()
|
_ = response.Body.Close()
|
||||||
logr.Errorf("[api.getEndpointStatusesFromRemoteInstances] Silently failed to retrieve endpoint statuses from %s: %s", instance.URL, err.Error())
|
logr.Errorf("[api.getEndpointStatusesFromRemoteInstances] Failed to decode endpoint statuses from %s: %s", instance.URL, err.Error())
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
_ = response.Body.Close()
|
_ = response.Body.Close()
|
||||||
@ -73,6 +75,10 @@ func getEndpointStatusesFromRemoteInstances(remoteConfig *remote.Config) ([]*end
|
|||||||
}
|
}
|
||||||
endpointStatusesFromAllRemotes = append(endpointStatusesFromAllRemotes, endpointStatuses...)
|
endpointStatusesFromAllRemotes = append(endpointStatusesFromAllRemotes, endpointStatuses...)
|
||||||
}
|
}
|
||||||
|
// Only return nil, error if no remote instances were successfully processed
|
||||||
|
if len(endpointStatusesFromAllRemotes) == 0 && remoteConfig.Instances != nil {
|
||||||
|
return nil, fmt.Errorf("failed to retrieve endpoint statuses from all remote instances")
|
||||||
|
}
|
||||||
return endpointStatusesFromAllRemotes, nil
|
return endpointStatusesFromAllRemotes, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user