retry the update check on 503

fixes #380
This commit is contained in:
tophf 2018-04-30 20:05:52 +03:00
parent 9aea35799d
commit c26fa76f53

View File

@ -28,6 +28,8 @@ global API_METHODS
let logQueue = []; let logQueue = [];
let logLastWriteTime = 0; let logLastWriteTime = 0;
const retrying = new Set();
API_METHODS.updateCheckAll = checkAllStyles; API_METHODS.updateCheckAll = checkAllStyles;
API_METHODS.updateCheck = checkStyle; API_METHODS.updateCheck = checkStyle;
API_METHODS.getUpdaterStates = () => STATES; API_METHODS.getUpdaterStates = () => STATES;
@ -44,6 +46,7 @@ global API_METHODS
} = {}) { } = {}) {
resetInterval(); resetInterval();
checkingAll = true; checkingAll = true;
retrying.clear();
const port = observe && chrome.runtime.connect({name: 'updater'}); const port = observe && chrome.runtime.connect({name: 'updater'});
return getStyles({}).then(styles => { return getStyles({}).then(styles => {
styles = styles.filter(style => style.updateUrl); styles = styles.filter(style => style.updateUrl);
@ -58,6 +61,7 @@ global API_METHODS
if (port) port.disconnect(); if (port) port.disconnect();
log(''); log('');
checkingAll = false; checkingAll = false;
retrying.clear();
}); });
} }
@ -98,6 +102,15 @@ global API_METHODS
} }
function reportFailure(error) { function reportFailure(error) {
// retry once if the error is 503 Service Unavailable
if (error === 503 && !retrying.get(id)) {
retrying.add(id);
return new Promise(resolve => {
setTimeout(() => {
resolve(checkStyle(id, style, port, save, ignoreDigest));
}, 1000);
});
}
error = error === 0 ? 'server unreachable' : error; error = error === 0 ? 'server unreachable' : error;
log(STATES.SKIPPED + ` (${error}) #${style.id} ${style.name}`); log(STATES.SKIPPED + ` (${error}) #${style.id} ${style.name}`);
const info = {error, STATES, style: getStyleWithNoCode(style)}; const info = {error, STATES, style: getStyleWithNoCode(style)};