[router] fix p and d worker filtering and bootstrap port handling (#11729)
This commit is contained in:
@@ -340,45 +340,32 @@ impl WorkerSelectionStage {
|
||||
model_id: Option<&str>,
|
||||
text: Option<&str>,
|
||||
) -> Option<(Arc<dyn Worker>, Arc<dyn Worker>)> {
|
||||
// Get prefill workers - use None for WorkerType filter to get all types,
|
||||
// then filter manually (since Prefill is a struct variant)
|
||||
let all_workers = self.worker_registry.get_workers_filtered(
|
||||
model_id,
|
||||
None, // Get all types
|
||||
Some(ConnectionMode::Grpc { port: None }),
|
||||
None,
|
||||
Some(ConnectionMode::Grpc { port: None }), // Match any gRPC worker
|
||||
false,
|
||||
);
|
||||
|
||||
let prefill_workers: Vec<_> = all_workers
|
||||
.iter()
|
||||
.filter(|w| matches!(w.metadata().worker_type, WorkerType::Prefill { .. }))
|
||||
.cloned()
|
||||
.collect();
|
||||
|
||||
let available_prefill: Vec<_> = prefill_workers
|
||||
.iter()
|
||||
.filter(|w| w.is_available())
|
||||
.cloned()
|
||||
.collect();
|
||||
let (available_prefill, available_decode): (Vec<_>, Vec<_>) =
|
||||
all_workers
|
||||
.into_iter()
|
||||
.fold((Vec::new(), Vec::new()), |mut acc, w| {
|
||||
if w.is_available() {
|
||||
match w.metadata().worker_type {
|
||||
WorkerType::Prefill { .. } => acc.0.push(w),
|
||||
WorkerType::Decode => acc.1.push(w),
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
acc
|
||||
});
|
||||
|
||||
if available_prefill.is_empty() {
|
||||
warn!("No available prefill workers");
|
||||
return None;
|
||||
}
|
||||
|
||||
// Get decode workers from the same all_workers list
|
||||
let decode_workers: Vec<_> = all_workers
|
||||
.iter()
|
||||
.filter(|w| matches!(w.metadata().worker_type, WorkerType::Decode))
|
||||
.cloned()
|
||||
.collect();
|
||||
|
||||
let available_decode: Vec<_> = decode_workers
|
||||
.iter()
|
||||
.filter(|w| w.is_available())
|
||||
.cloned()
|
||||
.collect();
|
||||
|
||||
if available_decode.is_empty() {
|
||||
warn!("No available decode workers");
|
||||
return None;
|
||||
|
||||
Reference in New Issue
Block a user