diff --git a/extensions/ql-vscode/src/codeql-cli/distribution/cleaner.ts b/extensions/ql-vscode/src/codeql-cli/distribution/cleaner.ts index 7fce00537..42dc17ba5 100644 --- a/extensions/ql-vscode/src/codeql-cli/distribution/cleaner.ts +++ b/extensions/ql-vscode/src/codeql-cli/distribution/cleaner.ts @@ -83,6 +83,15 @@ export class ExtensionManagedDistributionCleaner { return; } + // Shuffle the array so that multiple VS Code processes don't all try to clean up the same directory at the same time + for (let i = cleanableDirectories.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [cleanableDirectories[i], cleanableDirectories[j]] = [ + cleanableDirectories[j], + cleanableDirectories[i], + ]; + } + void this.logger.log( `Cleaning up ${cleanableDirectories.length} old versions of the CLI.`, );