mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-11-10 23:24:29 +00:00
vscode-postrefactor: enforcing more reentrancy
This commit is contained in:
parent
7f02d4657b
commit
d7b46e0527
2 changed files with 7 additions and 4 deletions
|
@ -97,7 +97,7 @@ async function askToDownloadProperExtensionVersion(config: Config, reason = "")
|
|||
*
|
||||
* ACHTUNG!: this function has a crazy amount of state transitions, handling errors during
|
||||
* each of them would result in a ton of code (especially accounting for cross-process
|
||||
* shared mutable `globalState` access). Enforcing reentrancy for this is best-effort.
|
||||
* shared mutable `globalState` access). Enforcing no reentrancy for this is best-effort.
|
||||
*/
|
||||
const tryDownloadNightlyExtension = notReentrant(async function tryDownloadNightlyExtension(
|
||||
config: Config,
|
||||
|
|
|
@ -5,7 +5,7 @@ import { spawnSync } from "child_process";
|
|||
import { ArtifactSource } from "./interfaces";
|
||||
import { fetchArtifactReleaseInfo } from "./fetch_artifact_release_info";
|
||||
import { downloadArtifactWithProgressUi } from "./downloads";
|
||||
import { log, assert } from "../util";
|
||||
import { log, assert, notReentrant } from "../util";
|
||||
import { Config, NIGHTLY_TAG } from "../config";
|
||||
|
||||
export async function ensureServerBinary(config: Config): Promise<null | string> {
|
||||
|
@ -82,7 +82,10 @@ function shouldDownloadServer(
|
|||
return installed.date.getTime() !== required.date.getTime();
|
||||
}
|
||||
|
||||
async function downloadServer(
|
||||
/**
|
||||
* Enforcing no reentrancy for this is best-effort.
|
||||
*/
|
||||
const downloadServer = notReentrant(async function downloadServer(
|
||||
source: ArtifactSource.GithubRelease,
|
||||
config: Config,
|
||||
): Promise<null | string> {
|
||||
|
@ -112,7 +115,7 @@ async function downloadServer(
|
|||
);
|
||||
|
||||
return binaryPath;
|
||||
}
|
||||
});
|
||||
|
||||
function isBinaryAvailable(binaryPath: string): boolean {
|
||||
const res = spawnSync(binaryPath, ["--version"]);
|
||||
|
|
Loading…
Reference in a new issue