fix: add buffer_destroyed_total and buffer_final_flush_total metrics

Added recordBufferDestroyed() and recordBufferFinalFlush() functions
and integrated into destroy() function in event-buffer.ts.

Tracks:
- Buffer destruction with reason and whether there was pending flush
- Final flushes that occur during buffer destruction
This commit is contained in:
Claude
2026-01-22 13:47:48 +00:00
parent 8d0c03cc2a
commit 5b8ea3bb2b
2 changed files with 35 additions and 1 deletions
+11 -1
View File
@@ -607,11 +607,16 @@ export const makeEventBuffer = (
} }
logger.debug('Destroying event buffer') logger.debug('Destroying event buffer')
const hadPendingFlush = isBuffering
destroyed = true destroyed = true
// Flush any remaining events // Flush any remaining events
if (isBuffering) { if (hadPendingFlush) {
flush(true) flush(true)
// Record final flush metric
if (metricsModule) {
metricsModule.recordBufferFinalFlush()
}
} }
// Clear all timers // Clear all timers
@@ -624,6 +629,11 @@ export const makeEventBuffer = (
// Remove all event listeners // Remove all event listeners
ev.removeAllListeners() ev.removeAllListeners()
// Record buffer destroyed metric
if (metricsModule) {
metricsModule.recordBufferDestroyed('normal', hadPendingFlush)
}
logger.debug('Event buffer destroyed successfully') logger.debug('Event buffer destroyed successfully')
} }
+24
View File
@@ -1934,6 +1934,30 @@ export function recordConnectionError(errorType: string): void {
} }
} }
/**
* Record buffer destruction
* Used by event-buffer.ts when buffer is destroyed
*/
export function recordBufferDestroyed(reason: string, hadPendingFlush: boolean): void {
try {
metrics.bufferDestroyed?.inc({ reason, had_pending_flush: hadPendingFlush ? 'true' : 'false' })
} catch {
// Metrics not initialized, ignore silently
}
}
/**
* Record final flush during buffer destruction
* Used by event-buffer.ts when buffer flushes remaining events on destroy
*/
export function recordBufferFinalFlush(): void {
try {
metrics.bufferFinalFlush?.inc({})
} catch {
// Metrics not initialized, ignore silently
}
}
// ============================================ // ============================================
// Global Instance // Global Instance
// ============================================ // ============================================