diff --git a/src/sql/workbench/parts/notebook/browser/models/notebookModel.ts b/src/sql/workbench/parts/notebook/browser/models/notebookModel.ts index 37d33a168d..3479e24d02 100644 --- a/src/sql/workbench/parts/notebook/browser/models/notebookModel.ts +++ b/src/sql/workbench/parts/notebook/browser/models/notebookModel.ts @@ -7,7 +7,7 @@ import { nb, connection } from 'azdata'; import { localize } from 'vs/nls'; import { Event, Emitter } from 'vs/base/common/event'; -import { Disposable, DisposableStore } from 'vs/base/common/lifecycle'; +import { Disposable } from 'vs/base/common/lifecycle'; import { IClientSession, INotebookModel, IDefaultConnection, INotebookModelOptions, ICellModel, NotebookContentChange, notebookConstants, INotebookContentsEditable } from 'sql/workbench/parts/notebook/browser/models/modelInterfaces'; import { NotebookChangeType, CellType, CellTypes } from 'sql/workbench/parts/notebook/common/models/contracts'; @@ -75,7 +75,6 @@ export class NotebookModel extends Disposable implements INotebookModel { private _kernelDisplayNameToNotebookProviderIds: Map = new Map(); private _onValidConnectionSelected = new Emitter(); private _oldKernel: nb.IKernel; - private _clientSessionListeners = new DisposableStore(); // should this be registered? private _connectionUrisToDispose: string[] = []; private _textCellsLoading: number = 0; private _standardKernels: notebookUtils.IStandardKernelWithProvider[]; @@ -490,16 +489,9 @@ export class NotebookModel extends Disposable implements INotebookModel { } } - // When changing kernel, update the active session and register the kernel change event - // So KernelDropDown could get the event fired when added listerner on Model.KernelChange + // When changing kernel, update the active session private updateActiveClientSession(clientSession: IClientSession) { - this.clearClientSessionListeners(); this._activeClientSession = clientSession; - this._clientSessionListeners.add(this._activeClientSession.kernelChanged(e => this._kernelChangedEmitter.fire(e))); - } - - private clearClientSessionListeners() { - this._clientSessionListeners.clear(); } public setDefaultKernelAndProviderId() { @@ -670,6 +662,10 @@ export class NotebookModel extends Disposable implements INotebookModel { if (kernel.info) { this.updateLanguageInfo(kernel.info.language_info); } + this._kernelChangedEmitter.fire({ + newValue: kernel, + oldValue: undefined + }); } private findSpec(displayName: string) { @@ -832,7 +828,6 @@ export class NotebookModel extends Disposable implements INotebookModel { this.notifyError(localize('shutdownClientSessionError', "A client session error occurred when closing the notebook: {0}", getErrorMessage(err))); } await this._activeClientSession.shutdown(); - this.clearClientSessionListeners(); this._activeClientSession = undefined; } }