diff --git a/src/Utils/event-buffer.ts b/src/Utils/event-buffer.ts index fb61aec8..b701542f 100644 --- a/src/Utils/event-buffer.ts +++ b/src/Utils/event-buffer.ts @@ -410,9 +410,9 @@ export const makeEventBuffer = ( } } - const recordFlushMetrics = (eventCount: number, forced: boolean) => { + const recordFlushMetrics = (eventCount: number, forced: boolean, cacheSize: number) => { if (metricsModule) { - metricsModule.recordBufferFlush(eventCount, forced) + metricsModule.recordBufferFlush(eventCount, forced, cacheSize) } } @@ -553,7 +553,7 @@ export const makeEventBuffer = ( stats.historyCacheSize = historyCache.size // Record metrics - recordFlushMetrics(eventCount, force) + recordFlushMetrics(eventCount, force, historyCache.size) // Log with [BAILEYS] prefix - use getMode() to avoid duplicating mode calculation logic const flushDuration = Date.now() - flushStartTime diff --git a/src/Utils/prometheus-metrics.ts b/src/Utils/prometheus-metrics.ts index 6315e958..d5690329 100644 --- a/src/Utils/prometheus-metrics.ts +++ b/src/Utils/prometheus-metrics.ts @@ -1855,15 +1855,23 @@ export function recordEventBuffered(eventType: string, count: number = 1): void * Record a buffer flush operation * Used by event-buffer.ts for metrics integration */ -export function recordBufferFlush(eventCount: number, forced: boolean): void { +export function recordBufferFlush(eventCount: number, forced: boolean, historyCacheSize?: number): void { try { // Use the main metrics object which has the correct labels ['type', 'reason'] metrics.bufferFlushes?.inc({ type: 'event', reason: forced ? 'forced' : 'normal' }) + // Update buffer cache size if provided + if (typeof historyCacheSize === 'number') { + metrics.bufferCacheSize?.set({}, historyCacheSize) + } + // Also update the lazy-loaded event buffer metrics for detailed tracking const ebMetrics = getEventBufferMetrics() ebMetrics.bufferFlushEvents?.observe({}, eventCount) ebMetrics.bufferCurrentSize?.set({}, 0) // Reset after flush + if (typeof historyCacheSize === 'number') { + ebMetrics.bufferHistoryCacheSize?.set({}, historyCacheSize) + } } catch { // Metrics not initialized, ignore silently }