From 7349680db44d69dfcedf8d3933db85a33daf7d89 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Wed, 7 Nov 2018 19:47:58 +0100 Subject: [PATCH] Better timeout installation --- .../electron-browser/extensionHost.ts | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts b/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts index 3ecc472ed73..40f4158fd3c 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts @@ -362,22 +362,38 @@ export class ExtensionHostProcessWorker implements IExtensionHostStarter { // 2) wait for the incoming `initialized` event. return new Promise((resolve, reject) => { - let handle = setTimeout(() => { - reject('timeout'); - }, 60 * 1000); + let timeoutHandle: NodeJS.Timer; + const installTimeoutCheck = () => { + timeoutHandle = setTimeout(() => { + reject('timeout'); + }, 60 * 1000); + }; + const uninstallTimeoutCheck = () => { + clearTimeout(timeoutHandle); + }; + + // Wait 60s for the ready message + installTimeoutCheck(); const disposable = protocol.onMessage(msg => { if (isMessageOfType(msg, MessageType.Ready)) { // 1) Extension Host is ready to receive messages, initialize it - this._createExtHostInitData().then(data => protocol.send(Buffer.from(JSON.stringify(data)))); + uninstallTimeoutCheck(); + + this._createExtHostInitData().then(data => { + + // Wait 60s for the initialized message + installTimeoutCheck(); + + protocol.send(Buffer.from(JSON.stringify(data))); + }); return; } if (isMessageOfType(msg, MessageType.Initialized)) { // 2) Extension Host is initialized - - clearTimeout(handle); + uninstallTimeoutCheck(); // stop listening for messages here disposable.dispose(); -- GitLab