[bugfix] add pd router policy validation (#7904)
This commit is contained in:
@@ -231,16 +231,12 @@ impl RouterConfig {
|
|||||||
PolicyConfig::PowerOfTwo { .. } => {
|
PolicyConfig::PowerOfTwo { .. } => {
|
||||||
crate::pd_types::PDSelectionPolicy::PowerOfTwo
|
crate::pd_types::PDSelectionPolicy::PowerOfTwo
|
||||||
}
|
}
|
||||||
PolicyConfig::CacheAware {
|
PolicyConfig::CacheAware { .. } => {
|
||||||
cache_threshold,
|
return Err(ConfigError::IncompatibleConfig {
|
||||||
balance_abs_threshold,
|
reason: "CacheAware policy is not supported in PD disaggregated mode"
|
||||||
balance_rel_threshold,
|
.to_string(),
|
||||||
..
|
});
|
||||||
} => crate::pd_types::PDSelectionPolicy::CacheAware {
|
}
|
||||||
cache_threshold: *cache_threshold,
|
|
||||||
balance_abs_threshold: *balance_abs_threshold,
|
|
||||||
balance_rel_threshold: *balance_rel_threshold,
|
|
||||||
},
|
|
||||||
PolicyConfig::RoundRobin => {
|
PolicyConfig::RoundRobin => {
|
||||||
return Err(ConfigError::IncompatibleConfig {
|
return Err(ConfigError::IncompatibleConfig {
|
||||||
reason: "RoundRobin policy is not supported in PD disaggregated mode"
|
reason: "RoundRobin policy is not supported in PD disaggregated mode"
|
||||||
|
|||||||
@@ -270,6 +270,12 @@ impl ConfigValidator {
|
|||||||
.to_string(),
|
.to_string(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
(RoutingMode::PrefillDecode { .. }, PolicyConfig::CacheAware { .. }) => {
|
||||||
|
return Err(ConfigError::IncompatibleConfig {
|
||||||
|
reason: "CacheAware policy is not supported in PD disaggregated mode"
|
||||||
|
.to_string(),
|
||||||
|
});
|
||||||
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -471,6 +477,31 @@ mod tests {
|
|||||||
.contains("RoundRobin policy is not supported in PD disaggregated mode"));
|
.contains("RoundRobin policy is not supported in PD disaggregated mode"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_validate_cache_aware_with_pd_mode() {
|
||||||
|
// CacheAware with PD mode should fail
|
||||||
|
let config = RouterConfig::new(
|
||||||
|
RoutingMode::PrefillDecode {
|
||||||
|
prefill_urls: vec![("http://prefill:8000".to_string(), None)],
|
||||||
|
decode_urls: vec!["http://decode:8000".to_string()],
|
||||||
|
},
|
||||||
|
PolicyConfig::CacheAware {
|
||||||
|
cache_threshold: 0.5,
|
||||||
|
balance_abs_threshold: 32,
|
||||||
|
balance_rel_threshold: 1.1,
|
||||||
|
eviction_interval_secs: 60,
|
||||||
|
max_tree_size: 1000,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
let result = ConfigValidator::validate(&config);
|
||||||
|
assert!(result.is_err());
|
||||||
|
assert!(result
|
||||||
|
.unwrap_err()
|
||||||
|
.to_string()
|
||||||
|
.contains("CacheAware policy is not supported in PD disaggregated mode"));
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_validate_power_of_two_with_regular_mode() {
|
fn test_validate_power_of_two_with_regular_mode() {
|
||||||
// PowerOfTwo with Regular mode should fail
|
// PowerOfTwo with Regular mode should fail
|
||||||
|
|||||||
Reference in New Issue
Block a user