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

Function builder_loop

nodedb-vector/src/builder.rs:39–85  ·  view source on GitHub ↗
(core_id: usize, rx: mpsc::Receiver<BuildRequest>, tx: mpsc::Sender<BuildComplete>)

Source from the content-addressed store, hash-verified

37}
38
39fn builder_loop(core_id: usize, rx: mpsc::Receiver<BuildRequest>, tx: mpsc::Sender<BuildComplete>) {
40 while let Ok(req) = rx.recv() {
41 debug!(
42 core_id,
43 key = %req.key,
44 segment_id = req.segment_id,
45 vectors = req.vectors.len(),
46 dim = req.dim,
47 "building HNSW index"
48 );
49
50 let start = std::time::Instant::now();
51 let mut index = HnswIndex::with_seed(
52 req.dim,
53 req.params,
54 (core_id as u64 + 1) * 1000 + req.segment_id as u64,
55 );
56
57 for vector in req.vectors {
58 index
59 .insert(vector)
60 .unwrap_or_else(|e| tracing::error!(error = %e, "HNSW insert failed"));
61 }
62
63 let elapsed = start.elapsed();
64 info!(
65 core_id,
66 key = %req.key,
67 segment_id = req.segment_id,
68 vectors = index.len(),
69 elapsed_ms = elapsed.as_millis() as u64,
70 "HNSW index built"
71 );
72
73 if tx
74 .send(BuildComplete {
75 key: req.key,
76 segment_id: req.segment_id,
77 index,
78 })
79 .is_err()
80 {
81 warn!(core_id, "builder: core channel closed, stopping");
82 break;
83 }
84 }
85}

Callers 1

spawn_builderFunction · 0.85

Calls 5

nowFunction · 0.85
elapsedMethod · 0.80
recvMethod · 0.45
insertMethod · 0.45
sendMethod · 0.45

Tested by

no test coverage detected