Skip to content

Commit 6ad96fd

Browse files
committed
fix: close work analysis database on shutdown
1 parent 93e05d6 commit 6ad96fd

3 files changed

Lines changed: 37 additions & 0 deletions

File tree

packages/server/src/__tests__/work-analysis-repo.test.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,31 @@ describe("WorkAnalysisRepo", () => {
3030
});
3131
});
3232

33+
it("closes the SQLite connection and can reopen the repository", () => {
34+
const dir = mkdtempSync(join(tmpdir(), "work-analysis-repo-"));
35+
const filePath = join(dir, "work-analysis.sqlite");
36+
const repo = new WorkAnalysisRepo({ filePath });
37+
38+
repo.upsert({
39+
id: "analysis-1",
40+
queryDigest: "digest-1",
41+
workspacePaths: ["/repo/app"],
42+
timeRange: { preset: "7d" },
43+
basicStatus: "succeeded",
44+
deepStatus: "idle",
45+
});
46+
47+
repo.close();
48+
repo.close();
49+
50+
const reloaded = new WorkAnalysisRepo({ filePath });
51+
expect(reloaded.findByQueryDigest("digest-1")).toMatchObject({
52+
id: "analysis-1",
53+
queryDigest: "digest-1",
54+
});
55+
reloaded.close();
56+
});
57+
3358
it("persists and clears the hourly dashboard index", () => {
3459
const dir = mkdtempSync(join(tmpdir(), "work-analysis-repo-"));
3560
const repo = new WorkAnalysisRepo({ filePath: join(dir, "work-analysis.sqlite") });

packages/server/src/server.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,8 @@ export async function createServer(
558558
supervisorMgr.stop();
559559
monitoringService?.stop();
560560
updateService?.stop();
561+
workAnalysisService.stopAutoScan();
562+
workAnalysisRepo.close();
561563
terminalMgr.shutdown();
562564
wsHub.destroy();
563565
eventBus.clear();

packages/server/src/storage/repositories/work-analysis-repo.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -591,4 +591,14 @@ export class WorkAnalysisRepo {
591591
db.prepare("DELETE FROM work_analysis_index_meta").run();
592592
});
593593
}
594+
595+
close(): void {
596+
if (!this.db) {
597+
return;
598+
}
599+
600+
this.db.close();
601+
this.db = undefined;
602+
this.initialized = false;
603+
}
594604
}

0 commit comments

Comments
 (0)