From 68f6a2ae884dfd8706d913a62507de1a5252c4c0 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 22 Jan 2026 13:28:25 +0000 Subject: [PATCH] fix: update buffer_cache_size metric with actual history cache size The buffer_cache_size metric was defined but never updated, always showing 0. Fix: - Add historyCacheSize parameter to recordBufferFlush function - Pass historyCache.size from event-buffer.ts when recording flush metrics - Update both bufferCacheSize and bufferHistoryCacheSize metrics --- src/Utils/event-buffer.ts | 6 +++--- src/Utils/prometheus-metrics.ts | 10 +++++++++- 2 files changed, 12 insertions(+), 4 deletions(-) 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 }