[router] refactor router and worker management 2/n (#10666)
This commit is contained in:
@@ -14,6 +14,7 @@ use crate::{
|
||||
worker_spec::{WorkerApiResponse, WorkerConfigRequest, WorkerErrorResponse},
|
||||
},
|
||||
reasoning_parser::ParserFactory,
|
||||
routers::WorkerInitializer,
|
||||
routers::{
|
||||
router_manager::{RouterId, RouterManager},
|
||||
RouterFactory, RouterTrait,
|
||||
@@ -594,6 +595,22 @@ pub async fn startup(config: ServerConfig) -> Result<(), Box<dyn std::error::Err
|
||||
|
||||
let app_context = Arc::new(app_context);
|
||||
|
||||
// Initialize workers before creating routers
|
||||
// This separates worker lifecycle from router lifecycle
|
||||
info!(
|
||||
"Initializing workers for routing mode: {:?}",
|
||||
config.router_config.mode
|
||||
);
|
||||
WorkerInitializer::initialize_workers(&config.router_config, &app_context.worker_registry)
|
||||
.await
|
||||
.map_err(|e| format!("Failed to initialize workers: {}", e))?;
|
||||
|
||||
let worker_stats = app_context.worker_registry.stats();
|
||||
info!(
|
||||
"Workers initialized: {} total, {} healthy",
|
||||
worker_stats.total_workers, worker_stats.healthy_workers
|
||||
);
|
||||
|
||||
// Create the appropriate router based on enable_igw flag
|
||||
let (router, router_manager): (Arc<dyn RouterTrait>, Option<Arc<RouterManager>>) =
|
||||
if config.router_config.enable_igw {
|
||||
@@ -608,12 +625,7 @@ pub async fn startup(config: ServerConfig) -> Result<(), Box<dyn std::error::Err
|
||||
));
|
||||
|
||||
// 1. HTTP Regular Router
|
||||
match RouterFactory::create_regular_router(
|
||||
&[], // Empty worker list - workers added later
|
||||
&app_context,
|
||||
)
|
||||
.await
|
||||
{
|
||||
match RouterFactory::create_regular_router(&app_context).await {
|
||||
Ok(http_regular) => {
|
||||
info!("Created HTTP Regular router");
|
||||
router_manager.register_router(
|
||||
@@ -628,8 +640,6 @@ pub async fn startup(config: ServerConfig) -> Result<(), Box<dyn std::error::Err
|
||||
|
||||
// 2. HTTP PD Router
|
||||
match RouterFactory::create_pd_router(
|
||||
&[],
|
||||
&[],
|
||||
None,
|
||||
None,
|
||||
&config.router_config.policy,
|
||||
@@ -684,7 +694,7 @@ pub async fn startup(config: ServerConfig) -> Result<(), Box<dyn std::error::Err
|
||||
|
||||
// Start queue processor if enabled
|
||||
if let Some(processor) = processor {
|
||||
tokio::spawn(processor.run());
|
||||
spawn(processor.run());
|
||||
info!(
|
||||
"Started request queue with size: {}, timeout: {}s",
|
||||
config.router_config.queue_size, config.router_config.queue_timeout_secs
|
||||
|
||||
Reference in New Issue
Block a user