Clean up old or oversized buffers from the pool
(&self, inner: &mut BufferPoolInner)
| 253 | |
| 254 | /// Clean up old or oversized buffers from the pool |
| 255 | fn cleanup_old_buffers(&self, inner: &mut BufferPoolInner) { |
| 256 | let old_size = inner.buffers.len(); |
| 257 | let cleanup_age = self.config.cleanup_interval * 2; // Keep buffers for 2x cleanup interval |
| 258 | |
| 259 | inner.buffers.retain(|pooled_buffer| { |
| 260 | !pooled_buffer.should_discard(self.config.max_buffer_capacity, cleanup_age) |
| 261 | }); |
| 262 | |
| 263 | let cleaned_count = old_size - inner.buffers.len(); |
| 264 | if cleaned_count > 0 { |
| 265 | inner.stats.buffers_discarded += cleaned_count as u64; |
| 266 | inner.stats.current_pool_size = inner.buffers.len(); |
| 267 | |
| 268 | if self.config.enable_monitoring { |
| 269 | info!("Cleaned up {} old buffers from pool, new size: {}", |
| 270 | cleaned_count, inner.buffers.len()); |
| 271 | } |
| 272 | } |
| 273 | |
| 274 | inner.last_cleanup = Instant::now(); |
| 275 | inner.stats.last_cleanup = Some(inner.last_cleanup); |
| 276 | } |
| 277 | |
| 278 | /// Get current buffer pool statistics |
| 279 | pub fn get_stats(&self) -> BufferPoolStats { |
no test coverage detected