Skip to content

Commit 997fa59

Browse files
sjuddConvex, Inc.
authored andcommitted
Add Vector to various DiskSegment struct names (#25935)
GitOrigin-RevId: 9b65e17db39c0549083269173100fb5ac541aa95
1 parent 540f0db commit 997fa59

File tree

8 files changed

+55
-47
lines changed

8 files changed

+55
-47
lines changed

crates/database/src/tests/vector_test_utils.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ use value::{
7676
use vector::{
7777
qdrant_segments::{
7878
unsafe_load_disk_segment,
79-
DiskSegmentPaths,
79+
VectorDiskSegmentPaths,
8080
},
8181
CompiledVectorSearch,
8282
QdrantSchema,
@@ -347,7 +347,7 @@ impl VectorFixtures {
347347
// Our usage is safe here because we're always fetching the data into
348348
// a new temp dir, so it's not possible to load a segment from these
349349
// specific paths multiple times.
350-
unsafe_load_disk_segment(&DiskSegmentPaths {
350+
unsafe_load_disk_segment(&VectorDiskSegmentPaths {
351351
segment: segment_path,
352352
uuids: id_tracker_path,
353353
deleted_bitset: bitset_path,

crates/database/src/vector_index_worker/vector_meta.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ use search::{
3232
};
3333
use storage::Storage;
3434
use vector::{
35-
qdrant_segments::DiskSegmentValues,
35+
qdrant_segments::VectorDiskSegmentValues,
3636
QdrantSchema,
3737
};
3838

@@ -87,7 +87,7 @@ pub struct VectorSearchIndex;
8787
#[async_trait]
8888
impl SearchIndex for VectorSearchIndex {
8989
type DeveloperConfig = DeveloperVectorIndexConfig;
90-
type NewSegment = DiskSegmentValues;
90+
type NewSegment = VectorDiskSegmentValues;
9191
type PreviousSegments = Vec<MutableFragmentedSegmentMetadata>;
9292
type Schema = QdrantSchema;
9393
type Segment = FragmentedVectorSegment;

crates/search/src/disk_index.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ use tokio::io::{
5353
AsyncWriteExt,
5454
};
5555
use vector::qdrant_segments::{
56-
DiskSegmentPaths,
57-
DiskSegmentValues,
56+
VectorDiskSegmentPaths,
57+
VectorDiskSegmentValues,
5858
};
5959
use walkdir::WalkDir;
6060

@@ -165,9 +165,9 @@ pub async fn download_single_file_zip<P: AsRef<Path>>(
165165
pub async fn upload_segment<RT: Runtime>(
166166
rt: &RT,
167167
storage: Arc<dyn Storage>,
168-
new_segment: DiskSegmentValues,
168+
new_segment: VectorDiskSegmentValues,
169169
) -> anyhow::Result<FragmentedVectorSegment> {
170-
let DiskSegmentPaths {
170+
let VectorDiskSegmentPaths {
171171
segment,
172172
uuids,
173173
deleted_bitset,

crates/search/src/fragmented_segment.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ use vector::{
3737
qdrant_segments::{
3838
load_disk_segment,
3939
merge_disk_segments_hnsw,
40-
UntarredDiskSegmentPaths,
40+
UntarredVectorDiskSegmentPaths,
4141
},
4242
PreviousSegment,
4343
};
@@ -95,7 +95,7 @@ impl<RT: Runtime> FragmentedSegmentFetcher<RT> {
9595
&'a self,
9696
search_storage: Arc<dyn Storage>,
9797
fragments: Vec<T>,
98-
) -> impl Stream<Item = anyhow::Result<UntarredDiskSegmentPaths>> + '_
98+
) -> impl Stream<Item = anyhow::Result<UntarredVectorDiskSegmentPaths>> + '_
9999
where
100100
anyhow::Error: From<T::Error>,
101101
{
@@ -112,7 +112,7 @@ impl<RT: Runtime> FragmentedSegmentFetcher<RT> {
112112
&self,
113113
search_storage: Arc<dyn Storage>,
114114
fragment: T,
115-
) -> anyhow::Result<UntarredDiskSegmentPaths>
115+
) -> anyhow::Result<UntarredVectorDiskSegmentPaths>
116116
where
117117
anyhow::Error: From<T::Error>,
118118
{
@@ -137,7 +137,9 @@ impl<RT: Runtime> FragmentedSegmentFetcher<RT> {
137137
);
138138
let (segment, id_tracker, bitset) =
139139
futures::try_join!(fetch_segment, fetch_id_tracker, fetch_bitset)?;
140-
Ok(UntarredDiskSegmentPaths::new(segment, id_tracker, bitset))
140+
Ok(UntarredVectorDiskSegmentPaths::new(
141+
segment, id_tracker, bitset,
142+
))
141143
}
142144

143145
async fn fetch_single_file(

crates/search/src/searcher/searcher.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ use text_search::tracker::{
6262
};
6363
use value::InternalId;
6464
use vector::{
65-
qdrant_segments::UntarredDiskSegmentPaths,
65+
qdrant_segments::UntarredVectorDiskSegmentPaths,
6666
CompiledVectorSearch,
6767
QdrantSchema,
6868
VectorIndexType,
@@ -283,7 +283,7 @@ impl<RT: Runtime> SearcherImpl<RT> {
283283

284284
async fn load_fragmented_segment(
285285
&self,
286-
paths: UntarredDiskSegmentPaths,
286+
paths: UntarredVectorDiskSegmentPaths,
287287
) -> anyhow::Result<Arc<SizedSegment>> {
288288
self.segment_cache.get(paths).await
289289
}

crates/search/src/searcher/segment_cache.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use futures::FutureExt;
1515
use qdrant_segment::segment::Segment;
1616
use vector::qdrant_segments::{
1717
load_disk_segment,
18-
UntarredDiskSegmentPaths,
18+
UntarredVectorDiskSegmentPaths,
1919
};
2020

2121
#[derive(Clone)]
@@ -40,7 +40,10 @@ impl Deref for SizedSegment {
4040
}
4141

4242
impl<RT: Runtime> SegmentGenerator<RT> {
43-
async fn generate_value(self, paths: UntarredDiskSegmentPaths) -> anyhow::Result<SizedSegment> {
43+
async fn generate_value(
44+
self,
45+
paths: UntarredVectorDiskSegmentPaths,
46+
) -> anyhow::Result<SizedSegment> {
4447
let segment = self
4548
.thread_pool
4649
.execute(move || load_disk_segment(paths))
@@ -50,7 +53,7 @@ impl<RT: Runtime> SegmentGenerator<RT> {
5053
}
5154

5255
pub(crate) struct SegmentCache<RT: Runtime> {
53-
lru: AsyncLru<RT, UntarredDiskSegmentPaths, SizedSegment>,
56+
lru: AsyncLru<RT, UntarredVectorDiskSegmentPaths, SizedSegment>,
5457
segment_generator: SegmentGenerator<RT>,
5558
}
5659

@@ -67,7 +70,10 @@ impl<RT: Runtime> SegmentCache<RT> {
6770
}
6871
}
6972

70-
pub async fn get(&self, paths: UntarredDiskSegmentPaths) -> anyhow::Result<Arc<SizedSegment>> {
73+
pub async fn get(
74+
&self,
75+
paths: UntarredVectorDiskSegmentPaths,
76+
) -> anyhow::Result<Arc<SizedSegment>> {
7177
self.lru
7278
.get(
7379
paths.clone(),

crates/vector/src/qdrant_index.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ use crate::{
9090
create_mutable_segment,
9191
segment_config,
9292
snapshot_segment,
93-
DiskSegmentValues,
93+
VectorDiskSegmentValues,
9494
DEFAULT_VECTOR_NAME,
9595
},
9696
query::{
@@ -334,7 +334,7 @@ impl QdrantSchema {
334334
revision_stream: DocumentStream<'_>,
335335
full_scan_threshold_kb: usize,
336336
previous_segments: &mut Vec<&mut impl PreviousSegment>,
337-
) -> anyhow::Result<Option<DiskSegmentValues>> {
337+
) -> anyhow::Result<Option<VectorDiskSegmentValues>> {
338338
let tmpdir = TempDir::new()?;
339339
let memory_timer = metrics::qdrant_segment_memory_build_timer();
340340
// With HNSW, we need to construct a temporary index, then do a one-time
@@ -435,7 +435,7 @@ impl QdrantSchema {
435435
anyhow::ensure!(
436436
num_deleted + memory_segment.available_point_count() as u32 == num_vectors
437437
);
438-
Ok::<DiskSegmentValues, anyhow::Error>(DiskSegmentValues {
438+
Ok::<VectorDiskSegmentValues, anyhow::Error>(VectorDiskSegmentValues {
439439
paths: snapshot_segment(
440440
&id_tracker,
441441
&memory_segment,

crates/vector/src/qdrant_segments.rs

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ pub fn create_mutable_segment(
197197
/// A set of paths for a fragmented vector segment where `segment` points to a
198198
/// single tar file generated by snapshotting a qdrant segment.
199199
#[derive(PartialEq, Eq, Debug, Clone, Hash)]
200-
pub struct DiskSegmentPaths {
200+
pub struct VectorDiskSegmentPaths {
201201
pub segment: PathBuf,
202202
pub uuids: PathBuf,
203203
pub deleted_bitset: PathBuf,
@@ -207,14 +207,14 @@ pub struct DiskSegmentPaths {
207207
/// a directory into which we've unpacked a tar file generated from snapshotting
208208
/// a qdrant segment.
209209
#[derive(PartialEq, Eq, Debug, Clone, Hash)]
210-
pub struct UntarredDiskSegmentPaths {
210+
pub struct UntarredVectorDiskSegmentPaths {
211211
segment_dir: PathBuf,
212212
uuids: PathBuf,
213213
deleted_bitset: PathBuf,
214214
}
215215

216-
impl UntarredDiskSegmentPaths {
217-
pub fn from(untarred_segment: PathBuf, paths: DiskSegmentPaths) -> Self {
216+
impl UntarredVectorDiskSegmentPaths {
217+
pub fn from(untarred_segment: PathBuf, paths: VectorDiskSegmentPaths) -> Self {
218218
Self::new(untarred_segment, paths.uuids, paths.deleted_bitset)
219219
}
220220

@@ -231,8 +231,8 @@ impl UntarredDiskSegmentPaths {
231231
}
232232

233233
#[derive(Debug)]
234-
pub struct DiskSegmentValues {
235-
pub paths: DiskSegmentPaths,
234+
pub struct VectorDiskSegmentValues {
235+
pub paths: VectorDiskSegmentPaths,
236236
pub num_vectors: u32,
237237
pub num_deleted: u32,
238238
}
@@ -242,7 +242,7 @@ pub fn build_disk_segment(
242242
tmp_path: &Path,
243243
disk_path: &Path,
244244
segment_config: SegmentConfig,
245-
) -> anyhow::Result<DiskSegmentValues> {
245+
) -> anyhow::Result<VectorDiskSegmentValues> {
246246
merge_disk_segments(vec![segment], tmp_path, disk_path, segment_config)
247247
}
248248

@@ -251,7 +251,7 @@ pub fn merge_disk_segments_hnsw(
251251
dimension: usize,
252252
tmp_path: &Path,
253253
disk_path: &Path,
254-
) -> anyhow::Result<DiskSegmentValues> {
254+
) -> anyhow::Result<VectorDiskSegmentValues> {
255255
let segment_config = segment_config(dimension, false, 4);
256256
merge_disk_segments(segments, tmp_path, disk_path, segment_config)
257257
}
@@ -261,7 +261,7 @@ pub fn merge_disk_segments(
261261
tmp_path: &Path,
262262
disk_path: &Path,
263263
segment_config: SegmentConfig,
264-
) -> anyhow::Result<DiskSegmentValues> {
264+
) -> anyhow::Result<VectorDiskSegmentValues> {
265265
// Create separate tmp paths to avoid unexpected overlap with the original
266266
// segment or various intermediate outputs. Because qdrant restores segments
267267
// to paths adjacent to the path where we save the snapshot, we want to
@@ -321,7 +321,7 @@ pub fn merge_disk_segments(
321321
&snapshot_tmp_path,
322322
disk_path,
323323
)?;
324-
Ok(DiskSegmentValues {
324+
Ok(VectorDiskSegmentValues {
325325
paths: segment,
326326
num_vectors: total_point_count as u32,
327327
num_deleted: num_deleted as u32,
@@ -333,7 +333,7 @@ pub fn snapshot_segment(
333333
segment: &Segment,
334334
tmp_path: &Path,
335335
index_path: &Path,
336-
) -> anyhow::Result<DiskSegmentPaths> {
336+
) -> anyhow::Result<VectorDiskSegmentPaths> {
337337
let segment_path = segment.take_snapshot(tmp_path, index_path)?;
338338

339339
// Write out our additional index files for the ID tracker.
@@ -350,7 +350,7 @@ pub fn snapshot_segment(
350350
id_tracker.write_deleted_bitset(&mut out)?;
351351
out.into_inner()?.sync_all()?;
352352
}
353-
Ok(DiskSegmentPaths {
353+
Ok(VectorDiskSegmentPaths {
354354
segment: segment_path,
355355
uuids: uuids_path,
356356
deleted_bitset: deleted_bitset_path,
@@ -399,13 +399,13 @@ fn open_db<T: AsRef<str>>(
399399
/// used exactly once per Segment open, use FragmentedSegmentLoader instead of
400400
/// this method.
401401
#[cfg(any(test, feature = "testing"))]
402-
pub fn unsafe_load_disk_segment(paths: &DiskSegmentPaths) -> anyhow::Result<Segment> {
402+
pub fn unsafe_load_disk_segment(paths: &VectorDiskSegmentPaths) -> anyhow::Result<Segment> {
403403
let path = restore_segment_from_tar(&paths.segment)?;
404-
let paths = UntarredDiskSegmentPaths::from(path, paths.clone());
404+
let paths = UntarredVectorDiskSegmentPaths::from(path, paths.clone());
405405
load_disk_segment(paths)
406406
}
407407

408-
pub fn load_disk_segment(paths: UntarredDiskSegmentPaths) -> anyhow::Result<Segment> {
408+
pub fn load_disk_segment(paths: UntarredVectorDiskSegmentPaths) -> anyhow::Result<Segment> {
409409
let untarred_path = paths.segment_dir;
410410
if !SegmentVersion::check_exists(&untarred_path) {
411411
anyhow::bail!("Missing segment version for {untarred_path:?}");
@@ -582,8 +582,8 @@ mod tests {
582582
segment_config,
583583
snapshot_segment,
584584
unsafe_load_disk_segment,
585-
DiskSegmentPaths,
586-
DiskSegmentValues,
585+
VectorDiskSegmentPaths,
586+
VectorDiskSegmentValues,
587587
DEFAULT_VECTOR_NAME,
588588
},
589589
};
@@ -657,7 +657,7 @@ mod tests {
657657
dimensions: usize,
658658
test_dir: &TempDir,
659659
vectors: impl Iterator<Item = (ExtendedPointId, Vec<f32>)>,
660-
) -> anyhow::Result<DiskSegmentPaths> {
660+
) -> anyhow::Result<VectorDiskSegmentPaths> {
661661
// Generate the memory segment
662662
let (memory_segment, _) = create_test_memory_segment(dimensions, test_dir, vectors)?;
663663

@@ -724,7 +724,7 @@ mod tests {
724724
fn create_disk_segment(
725725
test_dir: &TempDir,
726726
memory_segment: &Segment,
727-
) -> anyhow::Result<DiskSegmentPaths> {
727+
) -> anyhow::Result<VectorDiskSegmentPaths> {
728728
let indexing_path = test_dir.path().join("indexing");
729729
fs::create_dir_all(&indexing_path)?;
730730
let disk_path = test_dir.path().join("disk");
@@ -1005,7 +1005,7 @@ mod tests {
10051005
deleted_bitset.write(&mut file)?;
10061006
file.into_inner()?.sync_all()?;
10071007
}
1008-
let paths_with_deletes = DiskSegmentPaths {
1008+
let paths_with_deletes = VectorDiskSegmentPaths {
10091009
deleted_bitset: mutated_bitset_path,
10101010
..paths_with_deletes
10111011
};
@@ -1239,7 +1239,7 @@ mod tests {
12391239

12401240
// Mutate the deleted bitset and write it back to disk, as we would expect from
12411241
// the index worker.
1242-
let DiskSegmentPaths {
1242+
let VectorDiskSegmentPaths {
12431243
deleted_bitset: deleted_bitset_path,
12441244
uuids,
12451245
..
@@ -1273,7 +1273,7 @@ mod tests {
12731273
segments: Vec<&Segment>,
12741274
tmp_dir: &TempDir,
12751275
config: SegmentConfig,
1276-
) -> anyhow::Result<DiskSegmentValues> {
1276+
) -> anyhow::Result<VectorDiskSegmentValues> {
12771277
let indexing_path = tmp_dir.path().join("indexing");
12781278
fs::create_dir_all(&indexing_path)?;
12791279
let disk_path = tmp_dir.path().join("disk");
@@ -1326,7 +1326,7 @@ mod tests {
13261326

13271327
let config = segment_config(DIMENSIONS, false, 4);
13281328
let merged_dir = tempfile::tempdir()?;
1329-
let DiskSegmentValues { paths, .. } =
1329+
let VectorDiskSegmentValues { paths, .. } =
13301330
merge_disk_segments_tmpdir(vec![&initial_segment, &new_segment], &merged_dir, config)?;
13311331
let merged_segment = unsafe_load_disk_segment(&paths)?;
13321332
assert_eq!(
@@ -1365,7 +1365,7 @@ mod tests {
13651365

13661366
let config = segment_config(DIMENSIONS, false, 4);
13671367
let merged_dir = tempfile::tempdir()?;
1368-
let DiskSegmentValues {
1368+
let VectorDiskSegmentValues {
13691369
paths: merged_paths,
13701370
num_vectors,
13711371
..
@@ -1404,7 +1404,7 @@ mod tests {
14041404

14051405
let config = segment_config(DIMENSIONS, false, 4);
14061406
let merged_dir = tempfile::tempdir()?;
1407-
let DiskSegmentValues {
1407+
let VectorDiskSegmentValues {
14081408
paths: merged_paths,
14091409
num_vectors: merged_num_vectors,
14101410
..
@@ -1447,7 +1447,7 @@ mod tests {
14471447

14481448
let config = segment_config(DIMENSIONS, false, 4);
14491449
let merged_dir = tempfile::tempdir()?;
1450-
let DiskSegmentValues {
1450+
let VectorDiskSegmentValues {
14511451
paths: merged_paths,
14521452
num_vectors: merged_num_vectors,
14531453
..

0 commit comments

Comments
 (0)