Skip to content

Commit 618dc85

Browse files
authored
use fileservice.del (microsoft#181890)
microsoft#181671 use fileservice.del
1 parent a54b497 commit 618dc85

File tree

1 file changed

+2
-38
lines changed

1 file changed

+2
-38
lines changed

src/vs/platform/extensionManagement/node/extensionManagementService.ts

Lines changed: 2 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import { joinPath } from 'vs/base/common/resources';
1919
import * as semver from 'vs/base/common/semver/semver';
2020
import { isBoolean, isUndefined } from 'vs/base/common/types';
2121
import { URI } from 'vs/base/common/uri';
22-
import { generateUuid, isUUID } from 'vs/base/common/uuid';
22+
import { generateUuid } from 'vs/base/common/uuid';
2323
import * as pfs from 'vs/base/node/pfs';
2424
import { extract, ExtractError, IFile, zip } from 'vs/base/node/zip';
2525
import * as nls from 'vs/nls';
@@ -409,14 +409,11 @@ export class ExtensionsScanner extends Disposable {
409409
private readonly _onExtract = this._register(new Emitter<URI>());
410410
readonly onExtract = this._onExtract.event;
411411

412-
private cleanUpGeneratedFoldersPromise: Promise<void> = Promise.resolve();
413-
414412
constructor(
415413
private readonly beforeRemovingExtension: (e: ILocalExtension) => Promise<void>,
416414
@IFileService private readonly fileService: IFileService,
417415
@IExtensionsScannerService private readonly extensionsScannerService: IExtensionsScannerService,
418416
@IExtensionsProfileScannerService private readonly extensionsProfileScannerService: IExtensionsProfileScannerService,
419-
@IUriIdentityService private readonly uriIdentityService: IUriIdentityService,
420417
@ILogService private readonly logService: ILogService,
421418
) {
422419
super();
@@ -426,8 +423,6 @@ export class ExtensionsScanner extends Disposable {
426423

427424
async cleanUp(): Promise<void> {
428425
await this.removeUninstalledExtensions();
429-
this.cleanUpGeneratedFoldersPromise = this.cleanUpGeneratedFoldersPromise.then(() => this.removeGeneratedFolders());
430-
await this.cleanUpGeneratedFoldersPromise;
431426
}
432427

433428
async scanExtensions(type: ExtensionType | null, profileLocation: URI): Promise<ILocalExtension[]> {
@@ -460,8 +455,6 @@ export class ExtensionsScanner extends Disposable {
460455
}
461456

462457
async extractUserExtension(extensionKey: ExtensionKey, zipPath: string, metadata: Metadata, token: CancellationToken): Promise<ILocalExtension> {
463-
await this.cleanUpGeneratedFoldersPromise.catch(() => undefined);
464-
465458
const folderName = extensionKey.toString();
466459
const tempPath = path.join(this.extensionsScannerService.userExtensionsLocation.fsPath, `.${generateUuid()}`);
467460
const extensionPath = path.join(this.extensionsScannerService.userExtensionsLocation.fsPath, folderName);
@@ -531,9 +524,7 @@ export class ExtensionsScanner extends Disposable {
531524

532525
async removeExtension(extension: ILocalExtension | IScannedExtension, type: string): Promise<void> {
533526
this.logService.trace(`Deleting ${type} extension from disk`, extension.identifier.id, extension.location.fsPath);
534-
const renamedLocation = this.uriIdentityService.extUri.joinPath(this.uriIdentityService.extUri.dirname(extension.location), `.${generateUuid()}`);
535-
await this.rename(extension.identifier, extension.location.fsPath, renamedLocation.fsPath, Date.now() + (2 * 60 * 1000) /* Retry for 2 minutes */);
536-
await this.fileService.del(renamedLocation, { recursive: true });
527+
await this.fileService.del(extension.location, { recursive: true });
537528
this.logService.info('Deleted from disk', extension.identifier.id, extension.location.fsPath);
538529
}
539530

@@ -694,33 +685,6 @@ export class ExtensionsScanner extends Disposable {
694685
await Promise.allSettled(toRemove.map(e => this.removeUninstalledExtension(e)));
695686
}
696687

697-
private async removeGeneratedFolders(): Promise<void> {
698-
this.logService.trace('ExtensionManagementService#removeGeneratedFolders');
699-
const promises: Promise<any>[] = [];
700-
let stat;
701-
try {
702-
stat = await this.fileService.resolve(this.extensionsScannerService.userExtensionsLocation);
703-
} catch (error) {
704-
if (toFileOperationResult(error) !== FileOperationResult.FILE_NOT_FOUND) {
705-
this.logService.error(error);
706-
}
707-
}
708-
for (const child of stat?.children ?? []) {
709-
if (child.isDirectory && child.name.startsWith('.') && isUUID(child.name.substring(1))) {
710-
promises.push((async () => {
711-
this.logService.trace('Deleting the generated extension folder', child.resource.toString());
712-
try {
713-
await this.fileService.del(child.resource, { recursive: true });
714-
this.logService.info('Deleted the generated extension folder', child.resource.toString());
715-
} catch (error) {
716-
this.logService.error(error);
717-
}
718-
})());
719-
}
720-
}
721-
await Promise.allSettled(promises);
722-
}
723-
724688
private joinErrors(errorOrErrors: (Error | string) | (Array<Error | string>)): Error {
725689
const errors = Array.isArray(errorOrErrors) ? errorOrErrors : [errorOrErrors];
726690
if (errors.length === 1) {

0 commit comments

Comments
 (0)