Skip to content

Commit cc1b7d0

Browse files
authored
feat: deny unknown field in options (#184)
* fix: deny unknown options Signed-off-by: usamoi <usamoi@outlook.com> * test: deny unknown options Signed-off-by: usamoi <usamoi@outlook.com> --------- Signed-off-by: usamoi <usamoi@outlook.com>
1 parent c50912e commit cc1b7d0

File tree

19 files changed

+38
-10
lines changed

19 files changed

+38
-10
lines changed

crates/service/src/algorithms/quantization/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use std::sync::Arc;
1515
use validator::Validate;
1616

1717
#[derive(Debug, Clone, Serialize, Deserialize)]
18+
#[serde(deny_unknown_fields)]
1819
#[serde(rename_all = "snake_case")]
1920
pub enum QuantizationOptions {
2021
Trivial(TrivialQuantizationOptions),

crates/service/src/algorithms/quantization/product.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ use std::sync::Arc;
1616
use validator::Validate;
1717

1818
#[derive(Debug, Clone, Serialize, Deserialize, Validate)]
19+
#[serde(deny_unknown_fields)]
1920
pub struct ProductQuantizationOptions {
2021
#[serde(default = "ProductQuantizationOptions::default_sample")]
2122
pub sample: u32,
@@ -40,6 +41,7 @@ impl Default for ProductQuantizationOptions {
4041

4142
#[repr(u16)]
4243
#[derive(Debug, Clone, Serialize, Deserialize)]
44+
#[serde(deny_unknown_fields)]
4345
#[serde(rename_all = "snake_case")]
4446
pub enum ProductQuantizationOptionsRatio {
4547
X4 = 1,

crates/service/src/algorithms/quantization/scalar.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ use std::sync::Arc;
1111
use validator::Validate;
1212

1313
#[derive(Debug, Clone, Serialize, Deserialize, Validate)]
14+
#[serde(deny_unknown_fields)]
1415
pub struct ScalarQuantizationOptions {}
1516

1617
impl Default for ScalarQuantizationOptions {

crates/service/src/algorithms/quantization/trivial.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use std::sync::Arc;
99
use validator::Validate;
1010

1111
#[derive(Debug, Clone, Serialize, Deserialize, Validate)]
12+
#[serde(deny_unknown_fields)]
1213
pub struct TrivialQuantizationOptions {}
1314

1415
impl Default for TrivialQuantizationOptions {

crates/service/src/index/delete.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use crate::utils::file_wal::FileWal;
33
use dashmap::mapref::entry::Entry;
44
use dashmap::DashMap;
55
use parking_lot::Mutex;
6+
use serde::{Deserialize, Serialize};
67
use std::path::PathBuf;
78
use std::sync::Arc;
89

@@ -79,7 +80,7 @@ impl Delete {
7980
}
8081
}
8182

82-
#[derive(Debug, serde::Serialize, serde::Deserialize)]
83+
#[derive(Debug, Serialize, Deserialize)]
8384
struct Log {
8485
key: Pointer,
8586
}

crates/service/src/index/indexing/flat.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ use std::sync::Arc;
1010
use validator::Validate;
1111

1212
#[derive(Debug, Clone, Serialize, Deserialize, Validate)]
13+
#[serde(deny_unknown_fields)]
1314
pub struct FlatIndexingOptions {
1415
#[serde(default)]
1516
#[validate]

crates/service/src/index/indexing/hnsw.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ use std::{path::PathBuf, sync::Arc};
1010
use validator::Validate;
1111

1212
#[derive(Debug, Clone, Serialize, Deserialize, Validate)]
13+
#[serde(deny_unknown_fields)]
1314
pub struct HnswIndexingOptions {
1415
#[serde(default = "HnswIndexingOptions::default_m")]
1516
#[validate(range(min = 4, max = 128))]

crates/service/src/index/indexing/ivf.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ use std::sync::Arc;
1111
use validator::Validate;
1212

1313
#[derive(Debug, Clone, Serialize, Deserialize, Validate)]
14+
#[serde(deny_unknown_fields)]
1415
pub struct IvfIndexingOptions {
1516
#[serde(default = "IvfIndexingOptions::default_least_iterations")]
1617
#[validate(range(min = 1, max = 1_000_000))]

crates/service/src/index/indexing/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ use std::sync::Arc;
1616
use validator::Validate;
1717

1818
#[derive(Debug, Clone, Serialize, Deserialize)]
19+
#[serde(deny_unknown_fields)]
1920
#[serde(rename_all = "snake_case")]
2021
pub enum IndexingOptions {
2122
Flat(FlatIndexingOptions),

crates/service/src/index/mod.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ use validator::Validate;
3737
pub struct OutdatedError(#[from] pub Option<GrowingSegmentInsertError>);
3838

3939
#[derive(Debug, Clone, Serialize, Deserialize, Validate)]
40+
#[serde(deny_unknown_fields)]
4041
pub struct VectorOptions {
4142
#[validate(range(min = 1, max = 65535))]
4243
#[serde(rename = "dimensions")]
@@ -48,6 +49,7 @@ pub struct VectorOptions {
4849
}
4950

5051
#[derive(Debug, Clone, Serialize, Deserialize, Validate)]
52+
#[serde(deny_unknown_fields)]
5153
pub struct IndexOptions {
5254
#[validate]
5355
pub vector: VectorOptions,
@@ -467,7 +469,7 @@ impl<S: G> IndexView<S> {
467469
}
468470
}
469471

470-
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
472+
#[derive(Debug, Clone, Serialize, Deserialize)]
471473
struct IndexStartup {
472474
sealeds: HashSet<Uuid>,
473475
growings: HashSet<Uuid>,

0 commit comments

Comments
 (0)