}
}
+function IsDyingWorker(id: string) {
+ let dyingWorkers = Object.keys(dyingWorkerQueue);
+ if (dyingWorkers.length && dyingWorkerQueue[id]) {
+ return ((dyingWorkerQueue[id] === 'will-terminate') ||
+ (dyingWorkerQueue[id] === 'terminated'))
+ }
+ return false;
+}
+
function createWorker(id: string, startService: string, filename: string) {
if (workers[id]) {
workers[id].postMessage({ type: 'wake' });
}
export function startService(id: string, filename: string) {
+ if(IsDyingWorker(id)) {
+ console.debug(`startService - ${id} is in stop status, skip start`);
+ return;
+ }
console.debug(`startService - ${id}`);
initializeExtensionOnMain();
if (global['serviceType'] === 'STANDALONE') {
let app: any = null;
let dummyTimer: any;
-let periodLauncherAlive = 20; // 2s
+let periodLauncherAlive = 40; // 4s
let checkLauncherAlive = (id: string) => {
periodLauncherAlive--;
if (!periodLauncherAlive) {
- periodLauncherAlive = 20;
+ periodLauncherAlive = 40;
if (!wrt.checkLauncherAlive(id)) {
console.debug(`${id} launcher was killed.`)
requestStopService(id);