From 28e9322f72fd3271fcf6780b68b9ad807b102f04 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Thu, 23 Jun 2022 19:21:28 +0200 Subject: [PATCH] cleanup: initialize profiles when state is initiaized (#153002) clean up: - initialize profiles when state is initiaized --- src/vs/code/electron-main/main.ts | 2 +- src/vs/code/node/cliProcessMain.ts | 2 +- src/vs/platform/state/node/state.ts | 2 ++ src/vs/platform/state/node/stateService.ts | 10 ++++++++-- .../platform/userDataProfile/node/userDataProfile.ts | 5 +---- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/vs/code/electron-main/main.ts b/src/vs/code/electron-main/main.ts index 333b118eee3..c066fe588f3 100644 --- a/src/vs/code/electron-main/main.ts +++ b/src/vs/code/electron-main/main.ts @@ -249,7 +249,7 @@ class CodeMain { ].map(path => path ? FSPromises.mkdir(path, { recursive: true }) : undefined)), // State service - stateMainService.init().then(() => userDataProfilesMainService.init()), + stateMainService.init(), // Configuration service configurationService.initialize() diff --git a/src/vs/code/node/cliProcessMain.ts b/src/vs/code/node/cliProcessMain.ts index 40d93c2010b..724b3d245b8 100644 --- a/src/vs/code/node/cliProcessMain.ts +++ b/src/vs/code/node/cliProcessMain.ts @@ -160,7 +160,7 @@ class CliMain extends Disposable { // Initialize await Promise.all([ - stateService.init().then(() => userDataProfilesService.init()), + stateService.init(), configurationService.initialize() ]); diff --git a/src/vs/platform/state/node/state.ts b/src/vs/platform/state/node/state.ts index a02b3990bf7..f3b5e4246c1 100644 --- a/src/vs/platform/state/node/state.ts +++ b/src/vs/platform/state/node/state.ts @@ -11,6 +11,8 @@ export interface IStateService { readonly _serviceBrand: undefined; + readonly whenInitialized: Promise; + getItem(key: string, defaultValue: T): T; getItem(key: string, defaultValue?: T): T | undefined; diff --git a/src/vs/platform/state/node/stateService.ts b/src/vs/platform/state/node/stateService.ts index 67ca7ef32be..5f9c2384d1c 100644 --- a/src/vs/platform/state/node/stateService.ts +++ b/src/vs/platform/state/node/stateService.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { ThrottledDelayer } from 'vs/base/common/async'; +import { Barrier, ThrottledDelayer } from 'vs/base/common/async'; import { VSBuffer } from 'vs/base/common/buffer'; import { isUndefined, isUndefinedOrNull } from 'vs/base/common/types'; import { URI } from 'vs/base/common/uri'; @@ -150,16 +150,22 @@ export class StateService implements IStateService { protected readonly fileStorage: FileStorage; + private readonly initBarrier: Barrier; + readonly whenInitialized: Promise; + constructor( @IEnvironmentService environmentService: IEnvironmentService, @ILogService logService: ILogService, @IFileService fileService: IFileService ) { this.fileStorage = new FileStorage(environmentService.stateResource, logService, fileService); + this.initBarrier = new Barrier(); + this.whenInitialized = this.initBarrier.wait().then(() => undefined); } async init(): Promise { - return this.fileStorage.init(); + await this.fileStorage.init(); + this.initBarrier.open(); } getItem(key: string, defaultValue: T): T; diff --git a/src/vs/platform/userDataProfile/node/userDataProfile.ts b/src/vs/platform/userDataProfile/node/userDataProfile.ts index 0f7962b5c74..048d373aac3 100644 --- a/src/vs/platform/userDataProfile/node/userDataProfile.ts +++ b/src/vs/platform/userDataProfile/node/userDataProfile.ts @@ -44,10 +44,7 @@ export class UserDataProfilesService extends BaseUserDataProfilesService impleme @ILogService logService: ILogService, ) { super(environmentService, fileService, logService); - } - - init(): void { - this._profilesObject = undefined; + stateService.whenInitialized.then(() => this._profilesObject = undefined); } protected _profilesObject: UserDataProfilesObject | undefined;