Skip to content

Commit e640a4b

Browse files
committed
fix: wrap readEdges/readNodes in try/finally to prevent SQLite handle leaks (#539)
1 parent 5c5ba8f commit e640a4b

1 file changed

Lines changed: 20 additions & 14 deletions

File tree

tests/integration/incremental-edge-parity.test.js

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,24 +33,30 @@ function copyDirSync(src, dest) {
3333

3434
function readEdges(dbPath) {
3535
const db = new Database(dbPath, { readonly: true });
36-
const edges = db
37-
.prepare(
38-
`SELECT n1.name AS source_name, n2.name AS target_name, e.kind
39-
FROM edges e
40-
JOIN nodes n1 ON e.source_id = n1.id
41-
JOIN nodes n2 ON e.target_id = n2.id
42-
ORDER BY n1.name, n2.name, e.kind`,
43-
)
44-
.all();
45-
db.close();
46-
return edges;
36+
try {
37+
const edges = db
38+
.prepare(
39+
`SELECT n1.name AS source_name, n2.name AS target_name, e.kind
40+
FROM edges e
41+
JOIN nodes n1 ON e.source_id = n1.id
42+
JOIN nodes n2 ON e.target_id = n2.id
43+
ORDER BY n1.name, n2.name, e.kind`,
44+
)
45+
.all();
46+
return edges;
47+
} finally {
48+
db.close();
49+
}
4750
}
4851

4952
function readNodes(dbPath) {
5053
const db = new Database(dbPath, { readonly: true });
51-
const nodes = db.prepare('SELECT name, kind, file FROM nodes ORDER BY name, kind, file').all();
52-
db.close();
53-
return nodes;
54+
try {
55+
const nodes = db.prepare('SELECT name, kind, file FROM nodes ORDER BY name, kind, file').all();
56+
return nodes;
57+
} finally {
58+
db.close();
59+
}
5460
}
5561

5662
function edgeKey(e) {

0 commit comments

Comments
 (0)