fix(saas): WorkerDispatcher registration race — consumer starts after all workers registered
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled

Root cause: start_consumer() was called in new() before any register() calls,
so the consumer's cloned HashMap was always empty. Workers like log_operation
and record_usage were never found, causing "Unknown worker" errors.

- Add WorkerDispatcher::start() method to be called after all register()s
- Update main.rs to call dispatcher.start() after 7 workers registered
This commit is contained in:
iven
2026-04-08 08:33:54 +08:00
parent f9303ae0c3
commit eab9b5fdcc
2 changed files with 12 additions and 2 deletions

View File

@@ -48,6 +48,7 @@ async fn main() -> anyhow::Result<()> {
dispatcher.register(UpdateLastUsedWorker);
dispatcher.register(AggregateUsageWorker);
dispatcher.register(GenerateEmbeddingWorker);
dispatcher.start(); // 必须在所有 register() 之后调用
info!("Worker dispatcher initialized (7 workers registered)");
// 优雅停机令牌 — 取消后所有 SSE 流和长连接立即终止