Patch bufferPool with no limits to pool size

This commit is contained in:
Aditya Ujeniya
2026-03-03 09:51:04 +01:00
parent 688ad507a2
commit 74ab51f409
2 changed files with 1 additions and 25 deletions

View File

@@ -54,10 +54,6 @@ import (
// of data or reallocation needs to happen on writes. // of data or reallocation needs to happen on writes.
const BufferCap int = DefaultBufferCapacity const BufferCap int = DefaultBufferCapacity
// maxPoolSize caps the number of buffers held in the pool at any time.
// Prevents unbounded memory growth after large retention-cleanup bursts.
const maxPoolSize = 4096
// BufferPool is the global instance. // BufferPool is the global instance.
// It is initialized immediately when the package loads. // It is initialized immediately when the package loads.
var bufferPool = NewPersistentBufferPool() var bufferPool = NewPersistentBufferPool()
@@ -101,10 +97,7 @@ func (p *PersistentBufferPool) Put(b *buffer) {
p.mu.Lock() p.mu.Lock()
defer p.mu.Unlock() defer p.mu.Unlock()
if len(p.pool) >= maxPoolSize {
// Pool is full; drop the buffer and let GC collect it.
return
}
p.pool = append(p.pool, b) p.pool = append(p.pool, b)
} }

View File

@@ -52,23 +52,6 @@ func TestBufferPoolClear(t *testing.T) {
} }
} }
// TestBufferPoolMaxSize verifies that Put() silently drops buffers once the
// pool reaches maxPoolSize, preventing unbounded memory growth.
func TestBufferPoolMaxSize(t *testing.T) {
pool := NewPersistentBufferPool()
for i := 0; i < maxPoolSize; i++ {
pool.Put(&buffer{data: make([]schema.Float, 0, BufferCap), lastUsed: time.Now().Unix()})
}
if pool.GetSize() != maxPoolSize {
t.Fatalf("pool size = %d, want %d", pool.GetSize(), maxPoolSize)
}
pool.Put(&buffer{data: make([]schema.Float, 0, BufferCap), lastUsed: time.Now().Unix()})
if pool.GetSize() != maxPoolSize {
t.Errorf("pool size after overflow Put = %d, want %d (should not grow)", pool.GetSize(), maxPoolSize)
}
}
// ─── Buffer helpers ─────────────────────────────────────────────────────────── // ─── Buffer helpers ───────────────────────────────────────────────────────────
// TestBufferEndFirstWrite verifies the end() and firstWrite() calculations. // TestBufferEndFirstWrite verifies the end() and firstWrite() calculations.