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:
@@ -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')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
// ============================================
|
// ============================================
|
||||||
|
|||||||
Reference in New Issue
Block a user