metalk8s
metalk8s copied to clipboard
UI: auto-refresh of nodes and volumes is stopped after any API or Network error
Component:
UI
What happened:
Nodes and volumes not refreshed automatically.
What was expected:
Nodes and volumes to be refreshed.
Steps to reproduce
- Log into MetalK8s ui
- Switch your computer to sleep mode
- The nodes and volumes do not get refreshed anymore
Resolution proposal:
The issue comes from https://github.com/scality/metalk8s/blob/development/2.9/ui/src/ducks/app/nodes.js#L466 and https://github.com/scality/metalk8s/blob/development/2.9/ui/src/ducks/app/volumes.js#L413. The UI currently deliberately stop polling the API as soon as an error occurred, no matter which kind of error.
- Network error should be retried with an exponential backoff mechanism
- If retry pattern fails a notification should be displayed to the user inviting him to retry fetching the data
- When the user focus again the page the polling should be attempted again and the notification dismissed if it succeeds
May be related to https://github.com/scality/metalk8s/issues/2035
Except this statement
if there is an error during fetchAlerts, we can just yield put({type: STOP_REFRESH_ALERTS}), to stop the refresh in the fetchAlerts saga
Which should be replaced by a retry pattern on 5xx errors and network errors, in addition with a new attempt to poll the API on user focus.