Skip to content
Snippets Groups Projects
Unverified Commit edf21220 authored by Matiss Janis Aboltins's avatar Matiss Janis Aboltins Committed by GitHub
Browse files

:bug: (dev-server) retry loading backend script in web-worker (#806)


Co-authored-by: default avatarJed Fox <git@jedfox.com>
parent 889ca322
No related branches found
No related tags found
No related merge requests found
/* globals importScripts, backend */ /* globals importScripts, backend */
let hasInitialized = false; let hasInitialized = false;
self.addEventListener('message', e => { /**
* Sometimes the frontend build is way faster than backend.
* This results in the frontend starting up before backend is
* finished and thus the backend script is not available.
*
* The goal of this function is to retry X amount of times
* to retrieve the backend script with a small delay.
*/
const importScriptsWithRetry = async (script, { maxRetries = 5 } = {}) => {
try {
importScripts(script);
} catch (e) {
// Break if maxRetries has exceeded
if (maxRetries <= 0) {
throw e;
} else {
console.groupCollapsed(
`Failed to load backend, will retry ${maxRetries} more time(s)`,
);
console.log(e);
console.groupEnd();
}
// Attempt to retry after a small delay
await new Promise(resolve =>
setTimeout(async () => {
await importScriptsWithRetry(script, {
maxRetries: maxRetries - 1,
});
resolve();
}, 5000),
);
}
};
self.addEventListener('message', async e => {
if (!hasInitialized) { if (!hasInitialized) {
let msg = e.data; let msg = e.data;
...@@ -19,7 +54,10 @@ self.addEventListener('message', e => { ...@@ -19,7 +54,10 @@ self.addEventListener('message', e => {
return; return;
} }
importScripts(`${msg.publicUrl}/kcab/kcab.worker.${hash}.js`); await importScriptsWithRetry(
`${msg.publicUrl}/kcab/kcab.worker.${hash}.js`,
{ maxRetries: isDev ? 5 : 0 },
);
backend.initApp(version, isDev, self).catch(err => { backend.initApp(version, isDev, self).catch(err => {
console.log(err); console.log(err);
......
---
category: Maintenance
authors: [MatissJanis]
---
Retry loading backend script in web-workers (for local dev server)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment