MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / try_flush

Method try_flush

nodedb/src/engine/timeseries/manager.rs:170–186  ·  view source on GitHub ↗

Attempt to rotate and flush. Call this when `IngestResult::FlushNeeded`. 1. If frozen is still pending, flush it first (blocking). 2. Freeze the active memtable (drain → frozen). 3. Create a new empty active memtable. 4. Flush the frozen data to L1. Returns the number of segments written to L1.

(&mut self)

Source from the content-addressed store, hash-verified

168 ///
169 /// Returns the number of segments written to L1.
170 pub fn try_flush(&mut self) -> std::io::Result<usize> {
171 // If there's a pending frozen buffer, flush it first.
172 if self.frozen.is_some() {
173 self.flush_frozen();
174 }
175
176 // Freeze current active memtable.
177 let flushed_data = self.active.drain();
178 if flushed_data.is_empty() {
179 return Ok(0);
180 }
181
182 self.frozen = Some(flushed_data);
183 self.flush_frozen();
184
185 Ok(self.bucket.l1_segments_written() as usize)
186 }
187
188 /// Flush the frozen memtable to L1 segments.
189 fn flush_frozen(&mut self) {

Calls 4

flush_frozenMethod · 0.80
l1_segments_writtenMethod · 0.80
drainMethod · 0.45
is_emptyMethod · 0.45