const {parentPort, workerData} = require('worker_threads'); const postParentPortMessage = (message) => { if (parentPort) { parentPort.postMessage(message); } }; // Exit early when cancelled to prevent stalling shutdown. No cleanup needed when cancelling as everything is idempotent and will pick up // where it left off on next run function cancel() { postParentPortMessage('Update check job cancelled before completion'); if (parentPort) { postParentPortMessage('cancelled'); } else { setTimeout(() => { process.exit(0); }, 1000); } } if (parentPort) { parentPort.once('message', (message) => { if (message === 'cancel') { return cancel(); } }); } (async () => { const updateCheck = require('./update-check'); // INIT required services const models = require('./models'); models.init(); const permissions = require('./services/permissions'); await permissions.init(); const settings = require('./services/settings/settings-service'); await settings.init(); const tiers = require('./services/tiers'); await tiers.init(); // Finished INIT await updateCheck({ rethrowErrors: true, forceUpdate: workerData.forceUpdate, updateCheckUrl: workerData.updateCheckUrl }); postParentPortMessage(`Ran update check`); if (parentPort) { postParentPortMessage('done'); } else { // give the logging pipes time finish writing before exit setTimeout(() => { process.exit(0); }, 1000); } })();