Skip to content

Commit f6dbb2f

Browse files
authored
refactor: unwrap Heap namespace + self-reexport (#22931)
1 parent fdd5b77 commit f6dbb2f

1 file changed

Lines changed: 43 additions & 43 deletions

File tree

packages/opencode/src/cli/heap.ts

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -8,52 +8,52 @@ const log = Log.create({ service: "heap" })
88
const MINUTE = 60_000
99
const LIMIT = 2 * 1024 * 1024 * 1024
1010

11-
export namespace Heap {
12-
let timer: Timer | undefined
13-
let lock = false
14-
let armed = true
15-
16-
export function start() {
17-
if (!Flag.OPENCODE_AUTO_HEAP_SNAPSHOT) return
18-
if (timer) return
19-
20-
const run = async () => {
21-
if (lock) return
22-
23-
const stat = process.memoryUsage()
24-
if (stat.rss <= LIMIT) {
25-
armed = true
26-
return
27-
}
28-
if (!armed) return
29-
30-
lock = true
31-
armed = false
32-
const file = path.join(
33-
Global.Path.log,
34-
`heap-${process.pid}-${new Date().toISOString().replace(/[:.]/g, "")}.heapsnapshot`,
35-
)
36-
log.warn("heap usage exceeded limit", {
37-
rss: stat.rss,
38-
heap: stat.heapUsed,
39-
file,
40-
})
11+
let timer: Timer | undefined
12+
let lock = false
13+
let armed = true
4114

42-
await Promise.resolve()
43-
.then(() => writeHeapSnapshot(file))
44-
.catch((err) => {
45-
log.error("failed to write heap snapshot", {
46-
error: err instanceof Error ? err.message : String(err),
47-
file,
48-
})
49-
})
15+
export function start() {
16+
if (!Flag.OPENCODE_AUTO_HEAP_SNAPSHOT) return
17+
if (timer) return
5018

51-
lock = false
19+
const run = async () => {
20+
if (lock) return
21+
22+
const stat = process.memoryUsage()
23+
if (stat.rss <= LIMIT) {
24+
armed = true
25+
return
5226
}
27+
if (!armed) return
28+
29+
lock = true
30+
armed = false
31+
const file = path.join(
32+
Global.Path.log,
33+
`heap-${process.pid}-${new Date().toISOString().replace(/[:.]/g, "")}.heapsnapshot`,
34+
)
35+
log.warn("heap usage exceeded limit", {
36+
rss: stat.rss,
37+
heap: stat.heapUsed,
38+
file,
39+
})
40+
41+
await Promise.resolve()
42+
.then(() => writeHeapSnapshot(file))
43+
.catch((err) => {
44+
log.error("failed to write heap snapshot", {
45+
error: err instanceof Error ? err.message : String(err),
46+
file,
47+
})
48+
})
5349

54-
timer = setInterval(() => {
55-
void run()
56-
}, MINUTE)
57-
timer.unref?.()
50+
lock = false
5851
}
52+
53+
timer = setInterval(() => {
54+
void run()
55+
}, MINUTE)
56+
timer.unref?.()
5957
}
58+
59+
export * as Heap from "./heap"

0 commit comments

Comments
 (0)