Skip to content

Commit 850bcd1

Browse files
fix: avoid repeated scan until workspace folder changes
1 parent 0e7c866 commit 850bcd1

2 files changed

Lines changed: 14 additions & 4 deletions

File tree

src/syncHandler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class SyncHandler implements Disposable {
4747

4848
this.disposables.push(workspace.onDidChangeWorkspaceFolders(() => {
4949
this.refresh();
50-
setImmediate(() => upgradeManager.scan()); // Deferred
50+
setImmediate(() => upgradeManager.scan(true)); // Deferred
5151
}));
5252

5353
try {

src/upgrade/upgradeManager.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ function shouldRunCheckup() {
2424

2525
class UpgradeManager {
2626
private static watcherSetup = false;
27+
private static scanned = false;
2728

2829
public static initialize(context: ExtensionContext) {
2930
notificationManager.initialize(context);
@@ -45,15 +46,19 @@ class UpgradeManager {
4546
}));
4647

4748
// Defer the expensive scan operation to not block extension activation
48-
setImmediate(() => UpgradeManager.scan());
49+
setImmediate(() => UpgradeManager.scan(false));
4950
}
5051

51-
public static scan() {
52+
public static scan(forceRescan: boolean) {
5253
return instrumentOperation("java.dependency.scan", async (_operationId: string) => {
5354
if (!shouldRunCheckup()) {
5455
return;
5556
}
5657

58+
if (forceRescan) {
59+
UpgradeManager.scanned = false;
60+
}
61+
5762
if (!(await languageServerApiManager.ready())) {
5863
sendInfo(_operationId, { skipReason: "languageServerNotReady" });
5964
return;
@@ -67,6 +72,11 @@ class UpgradeManager {
6772
return;
6873
}
6974

75+
if (UpgradeManager.scanned) {
76+
return;
77+
}
78+
UpgradeManager.scanned = true;
79+
7080
workspace.workspaceFolders?.forEach((folder) =>
7181
UpgradeManager.runDependencyCheckup(folder)
7282
);
@@ -109,7 +119,7 @@ class UpgradeManager {
109119
const onDidServerModeChange: Event<string> = extensionApi.onDidServerModeChange;
110120
contextManager.context.subscriptions.push(onDidServerModeChange((mode: LanguageServerMode) => {
111121
if (mode !== LanguageServerMode.LightWeight) {
112-
UpgradeManager.scan();
122+
UpgradeManager.scan(false);
113123
}
114124
}));
115125
UpgradeManager.watcherSetup = true;

0 commit comments

Comments
 (0)