From 72e2648cf4b571aafd48d5292b77c3d4e03a54a9 Mon Sep 17 00:00:00 2001 From: Ian Huff Date: Wed, 5 Feb 2020 13:43:53 -0800 Subject: [PATCH 1/2] don't cancel an already resolve servercache just due to disableUI changes --- news/2 Fixes/9926.md | 1 + .../datascience/jupyter/liveshare/serverCache.ts | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 news/2 Fixes/9926.md diff --git a/news/2 Fixes/9926.md b/news/2 Fixes/9926.md new file mode 100644 index 000000000000..c609b86c388b --- /dev/null +++ b/news/2 Fixes/9926.md @@ -0,0 +1 @@ +Use the autoStart server when available. diff --git a/src/client/datascience/jupyter/liveshare/serverCache.ts b/src/client/datascience/jupyter/liveshare/serverCache.ts index 663452536af5..b3bf82c090af 100644 --- a/src/client/datascience/jupyter/liveshare/serverCache.ts +++ b/src/client/datascience/jupyter/liveshare/serverCache.ts @@ -17,6 +17,7 @@ interface IServerData { options: INotebookServerOptions; promise: Promise; cancelSource: CancellationTokenSource; + resolved: boolean; } export class ServerCache implements IAsyncDisposable { @@ -43,7 +44,7 @@ export class ServerCache implements IAsyncDisposable { // See if the old options had the same UI setting. If not, // cancel the old - if (data && data.options.disableUI !== fixedOptions.disableUI) { + if (data && !data.resolved && data.options.disableUI !== fixedOptions.disableUI) { traceInfo('Cancelling server create as UI state has changed'); data.cancelSource.cancel(); data = undefined; @@ -55,7 +56,8 @@ export class ServerCache implements IAsyncDisposable { data = { promise: createFunction(options, cancelSource.token), options: fixedOptions, - cancelSource + cancelSource, + resolved: false }; this.cache.set(key, data); } @@ -75,6 +77,12 @@ export class ServerCache implements IAsyncDisposable { return oldDispose(); }; + // We've resolved the promise at this point + const resolvedData = this.cache.get(key); + if (resolvedData) { + resolvedData.resolved = true; + } + return server; }) .catch(e => { From 9a661b1c82b6a76f7d5fd378814b8cfd1e038365 Mon Sep 17 00:00:00 2001 From: Ian Huff Date: Wed, 5 Feb 2020 13:59:04 -0800 Subject: [PATCH 2/2] don't pull data a second time --- src/client/datascience/jupyter/liveshare/serverCache.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/client/datascience/jupyter/liveshare/serverCache.ts b/src/client/datascience/jupyter/liveshare/serverCache.ts index b3bf82c090af..b9390fd6d311 100644 --- a/src/client/datascience/jupyter/liveshare/serverCache.ts +++ b/src/client/datascience/jupyter/liveshare/serverCache.ts @@ -78,9 +78,8 @@ export class ServerCache implements IAsyncDisposable { }; // We've resolved the promise at this point - const resolvedData = this.cache.get(key); - if (resolvedData) { - resolvedData.resolved = true; + if (data) { + data.resolved = true; } return server;