Skip to content

Commit

Permalink
"input" variables prevent compound configuration from launching more …
Browse files Browse the repository at this point in the history
…than one session (#157355)

Fixes #141514
  • Loading branch information
roblourens authored and joyceerhl committed Aug 10, 2022
1 parent 8b58ae7 commit 3c0986b
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/vs/workbench/contrib/debug/browser/debugService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import * as aria from 'vs/base/browser/ui/aria/aria';
import { Action, IAction } from 'vs/base/common/actions';
import { distinct } from 'vs/base/common/arrays';
import { raceTimeout, RunOnceScheduler } from 'vs/base/common/async';
import { Queue, raceTimeout, RunOnceScheduler } from 'vs/base/common/async';
import { CancellationTokenSource } from 'vs/base/common/cancellation';
import { isErrorWithActions } from 'vs/base/common/errorMessage';
import * as errors from 'vs/base/common/errors';
Expand Down Expand Up @@ -825,6 +825,7 @@ export class DebugService implements IDebugService {
return Promise.all(sessions.map(s => disconnect ? s.disconnect(undefined, suspend) : s.terminate()));
}

private variableSubstitutionQueue = new Queue<IConfig | undefined>();
private async substituteVariables(launch: ILaunch | undefined, config: IConfig): Promise<IConfig | undefined> {
const dbg = this.adapterManager.getDebugger(config.type);
if (dbg) {
Expand All @@ -838,7 +839,8 @@ export class DebugService implements IDebugService {
}
}
try {
return await dbg.substituteVariables(folder, config);
// Variable substitution can require user interaction, so only one of these should be running at a time.
return this.variableSubstitutionQueue.queue(() => dbg.substituteVariables(folder, config));
} catch (err) {
this.showError(err.message, undefined, !!launch?.getConfiguration(config.name));
return undefined; // bail out
Expand Down

0 comments on commit 3c0986b

Please sign in to comment.