Skip to content

Commit fd2cfdf

Browse files
committed
refactor: replace serde-based DiffConfig implementation with macro
1 parent 429e180 commit fd2cfdf

8 files changed

Lines changed: 213 additions & 174 deletions

File tree

lib/collection/src/collection/collection_ops.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ impl Collection {
3434
) -> CollectionResult<()> {
3535
{
3636
let mut config = self.collection_config.write().await;
37-
config.params = config.params.update(params_diff)?;
37+
config.params = config.params.update(&params_diff);
3838
}
3939
self.collection_config.read().await.save(&self.path)?;
4040
Ok(())
@@ -51,7 +51,7 @@ impl Collection {
5151
) -> CollectionResult<()> {
5252
{
5353
let mut config = self.collection_config.write().await;
54-
config.hnsw_config = config.hnsw_config.update(hnsw_config_diff)?;
54+
config.hnsw_config = config.hnsw_config.update(&hnsw_config_diff);
5555
}
5656
self.collection_config.read().await.save(&self.path)?;
5757
Ok(())
@@ -104,7 +104,7 @@ impl Collection {
104104
) -> CollectionResult<()> {
105105
{
106106
let mut config = self.collection_config.write().await;
107-
config.optimizer_config = config.optimizer_config.update(optimizer_config_diff)?;
107+
config.optimizer_config = config.optimizer_config.update(&optimizer_config_diff);
108108
}
109109
self.collection_config.read().await.save(&self.path)?;
110110
Ok(())
@@ -186,7 +186,7 @@ impl Collection {
186186
{
187187
let mut config = self.collection_config.write().await;
188188
if let Some(current_config) = config.strict_mode_config.as_mut() {
189-
*current_config = current_config.update(strict_mode_diff)?;
189+
*current_config = current_config.update(&strict_mode_diff);
190190
} else {
191191
config.strict_mode_config = Some(strict_mode_diff);
192192
}

lib/collection/src/collection/mod.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ impl Collection {
132132
let mut effective_optimizers_config = collection_config.optimizer_config.clone();
133133
if let Some(optimizers_overwrite) = optimizers_overwrite.clone() {
134134
effective_optimizers_config =
135-
effective_optimizers_config.update(optimizers_overwrite)?;
135+
effective_optimizers_config.update(&optimizers_overwrite);
136136
}
137137

138138
let shard_key = shard_key_mapping
@@ -253,9 +253,7 @@ impl Collection {
253253
let mut effective_optimizers_config = collection_config.optimizer_config.clone();
254254

255255
if let Some(optimizers_overwrite) = optimizers_overwrite.clone() {
256-
effective_optimizers_config = effective_optimizers_config
257-
.update(optimizers_overwrite)
258-
.expect("Can not apply optimizer overwrite");
256+
effective_optimizers_config = effective_optimizers_config.update(&optimizers_overwrite);
259257
}
260258

261259
let shared_collection_config = Arc::new(RwLock::new(collection_config.clone()));
@@ -847,7 +845,7 @@ impl Collection {
847845
let config = self.collection_config.read().await;
848846

849847
if let Some(optimizers_overwrite) = self.optimizers_overwrite.clone() {
850-
Ok(config.optimizer_config.update(optimizers_overwrite)?)
848+
Ok(config.optimizer_config.update(&optimizers_overwrite))
851849
} else {
852850
Ok(config.optimizer_config.clone())
853851
}

lib/collection/src/collection_manager/optimizers/config_mismatch_optimizer.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,9 @@ impl ConfigMismatchOptimizer {
116116
self.collection_params
117117
.vectors
118118
.get_params(vector_name)
119-
.and_then(|vector_params| vector_params.hnsw_config),
119+
.and_then(|vector_params| {
120+
vector_params.hnsw_config.as_ref()
121+
}),
120122
);
121123
if effective_hnsw.mismatch_requires_rebuild(&target_hnsw) {
122124
return true;
@@ -577,12 +579,12 @@ mod tests {
577579
.for_each(|segment| {
578580
assert_eq!(
579581
segment.config().vector_data[VECTOR1_NAME].index,
580-
Indexes::Hnsw(hnsw_config_collection.update(hnsw_config_vector1).unwrap()),
582+
Indexes::Hnsw(hnsw_config_collection.update(&hnsw_config_vector1)),
581583
"HNSW config of vector1 is not what we expect",
582584
);
583585
assert_eq!(
584586
segment.config().vector_data[VECTOR2_NAME].index,
585-
Indexes::Hnsw(hnsw_config_collection.update(hnsw_config_vector2).unwrap()),
587+
Indexes::Hnsw(hnsw_config_collection.update(&hnsw_config_vector2)),
586588
"HNSW config of vector2 is not what we expect",
587589
);
588590
});

lib/collection/src/collection_manager/optimizers/segment_optimizer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ pub trait SegmentOptimizer {
248248
.vectors
249249
.get_params(vector_name)
250250
.and_then(|params| params.hnsw_config);
251-
let vector_hnsw = collection_hnsw.update_opt(param_hnsw);
251+
let vector_hnsw = collection_hnsw.update_opt(param_hnsw.as_ref());
252252
config.index = Indexes::Hnsw(vector_hnsw);
253253

254254
// Assign quantization config

lib/collection/src/config.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,9 @@ impl CollectionConfigInternal {
282282
let mut messages = String::new();
283283

284284
for (vector_name, vector_config) in self.params.vectors.params_iter() {
285-
let vector_hnsw = self.hnsw_config.update_opt(vector_config.hnsw_config);
285+
let vector_hnsw = self
286+
.hnsw_config
287+
.update_opt(vector_config.hnsw_config.as_ref());
286288

287289
let vector_quantization =
288290
vector_config.quantization_config.is_some() || self.quantization_config.is_some();
@@ -455,7 +457,7 @@ impl CollectionParams {
455457

456458
if let Some(hnsw_diff) = hnsw_config {
457459
if let Some(existing_hnsw) = &vector_params.hnsw_config {
458-
vector_params.hnsw_config = Some(existing_hnsw.update(hnsw_diff)?);
460+
vector_params.hnsw_config = Some(existing_hnsw.update(&hnsw_diff));
459461
} else {
460462
vector_params.hnsw_config = Some(hnsw_diff);
461463
}

0 commit comments

Comments
 (0)