Skip to content

Commit 599ae56

Browse files
committed
Add "CodeQL: Trim Overlay Base Cache" command
1 parent eb44a90 commit 599ae56

File tree

5 files changed

+44
-0
lines changed

5 files changed

+44
-0
lines changed

extensions/ql-vscode/package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -790,6 +790,11 @@
790790
"command": "codeQL.trimCache",
791791
"title": "CodeQL: Trim Cache"
792792
},
793+
{
794+
"command": "codeQL.trimOverlayBaseCache",
795+
"title": "CodeQL: Trim Overlay Base Cache",
796+
"when": "codeQL.cliFeatures.queryServerModeInTrimCache"
797+
},
793798
{
794799
"command": "codeQL.installPackDependencies",
795800
"title": "CodeQL: Install Pack Dependencies"

extensions/ql-vscode/src/common/commands.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ export type LocalDatabasesCommands = {
221221
"codeQL.upgradeCurrentDatabase": () => Promise<void>;
222222
"codeQL.clearCache": () => Promise<void>;
223223
"codeQL.trimCache": () => Promise<void>;
224+
"codeQL.trimOverlayBaseCache": () => Promise<void>;
224225

225226
// Explorer context menu
226227
"codeQL.setCurrentDatabase": (uri: Uri) => Promise<void>;

extensions/ql-vscode/src/databases/local-databases-ui.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,7 @@ export class DatabaseUI extends DisposableObject {
284284
this.handleUpgradeCurrentDatabase.bind(this),
285285
"codeQL.clearCache": this.handleClearCache.bind(this),
286286
"codeQL.trimCache": this.handleTrimCache.bind(this),
287+
"codeQL.trimOverlayBaseCache": this.handleTrimOverlayBaseCache.bind(this),
287288
"codeQLDatabases.chooseDatabaseFolder":
288289
this.handleChooseDatabaseFolder.bind(this),
289290
"codeQLDatabases.chooseDatabaseArchive":
@@ -688,6 +689,24 @@ export class DatabaseUI extends DisposableObject {
688689
);
689690
}
690691

692+
private async handleTrimOverlayBaseCache(): Promise<void> {
693+
return withProgress(
694+
async () => {
695+
if (
696+
this.queryServer !== undefined &&
697+
this.databaseManager.currentDatabaseItem !== undefined
698+
) {
699+
await this.queryServer.trimOverlayBaseCacheInDatabase(
700+
this.databaseManager.currentDatabaseItem,
701+
);
702+
}
703+
},
704+
{
705+
title: "Removing all overlay-dependent data from cache",
706+
},
707+
);
708+
}
709+
691710
private async handleGetCurrentDatabase(): Promise<string | undefined> {
692711
const dbItem = await this.getDatabaseItemInternal(undefined);
693712
return dbItem?.databaseUri.fsPath;

extensions/ql-vscode/src/query-server/messages.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ export interface TrimCacheParams {
4040
* The dataset that we want to trim the cache of.
4141
*/
4242
db: string;
43+
/**
44+
* The cache cleanup mode to use (default: "trim")
45+
*/
46+
mode?: "clear" | "trim" | "fit" | "overlay";
4347
}
4448

4549
/**

extensions/ql-vscode/src/query-server/query-runner.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,21 @@ export class QueryRunner {
142142
await this.qs.sendRequest(trimCache, params);
143143
}
144144

145+
async trimOverlayBaseCacheInDatabase(dbItem: DatabaseItem): Promise<void> {
146+
if (dbItem.contents === undefined) {
147+
throw new Error(
148+
"Can't trim the overlay base cache in an invalid database.",
149+
);
150+
}
151+
152+
const db = dbItem.databaseUri.fsPath;
153+
const params: TrimCacheParams = {
154+
db,
155+
mode: "overlay",
156+
};
157+
await this.qs.sendRequest(trimCache, params);
158+
}
159+
145160
public async compileAndRunQueryAgainstDatabaseCore(
146161
dbPath: string,
147162
queries: CoreQueryTarget[],

0 commit comments

Comments
 (0)