fix(core): re-arm flush timer after retryable flush failure
When flushAgentLogBuffer() requeues valid entries on transient failure, the timer was cleared but never re-armed, leaving entries in memory indefinitely. Now schedules a retry after AGENT_LOG_FLUSH_MS. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -4857,6 +4857,17 @@ export class TaskStore extends EventEmitter<TaskStoreEvents> {
|
||||
// Stale rows were already filtered out above.
|
||||
if (!flushSucceeded && validEntries.length > 0) {
|
||||
this.agentLogBuffer.unshift(...validEntries);
|
||||
// Re-arm the flush timer so retried entries don't sit in memory forever.
|
||||
if (!this.agentLogFlushTimer) {
|
||||
this.agentLogFlushTimer = setTimeout(() => {
|
||||
try {
|
||||
this.flushAgentLogBuffer();
|
||||
} catch (err) {
|
||||
console.error(`[fusion] Retry agent log flush failed (${this.db.path}):`, err);
|
||||
}
|
||||
}, TaskStore.AGENT_LOG_FLUSH_MS);
|
||||
this.agentLogFlushTimer.unref();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user