Skip to content

Commit 9133ae7

Browse files
doctarockedelauna
authored andcommitted
fix: keep usage tracker inert after dispose
1 parent 8d1c7cc commit 9133ae7

2 files changed

Lines changed: 13 additions & 0 deletions

File tree

src/core/task/UsageTracker.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ export interface UsageTrackerOptions {
1818
const DEFAULT_TOKEN_USAGE_EMIT_INTERVAL_MS = 2000
1919

2020
export class UsageTracker {
21+
private disposed = false
22+
2123
private readonly taskId: string
2224
private readonly getMessages: () => ClineMessage[]
2325
private readonly emit: EmitTaskEvent
@@ -66,15 +68,24 @@ export class UsageTracker {
6668
}
6769

6870
public emitTokenUsageUpdate(tokenUsage: TokenUsage): void {
71+
if (this.disposed) {
72+
return
73+
}
74+
6975
this.debouncedEmitTokenUsage(tokenUsage, this.currentToolUsage)
7076
}
7177

7278
public emitFinalTokenUsageUpdate(): void {
79+
if (this.disposed) {
80+
return
81+
}
82+
7383
this.emitTokenUsageUpdate(this.getTokenUsage())
7484
this.debouncedEmitTokenUsage.flush()
7585
}
7686

7787
public dispose(): void {
88+
this.disposed = true
7889
this.debouncedEmitTokenUsage.cancel()
7990
}
8091

src/core/task/__tests__/UsageTracker.spec.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ describe("UsageTracker", () => {
8080
expect(emit).toHaveBeenCalledTimes(1)
8181

8282
tracker.dispose()
83+
tracker.emitTokenUsageUpdate(tracker.getTokenUsage())
84+
tracker.emitFinalTokenUsageUpdate()
8385
vi.advanceTimersByTime(1000)
8486

8587
expect(emit).toHaveBeenCalledTimes(1)

0 commit comments

Comments
 (0)