Unverified Commit 4ed57807 authored by Simo Lin's avatar Simo Lin Committed by GitHub
Browse files

[bugfix] add pd router policy validation (#7904)

parent dd445a41
...@@ -231,16 +231,12 @@ impl RouterConfig { ...@@ -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 { ...@@ -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 { ...@@ -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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment