fix(dispatcher,mcp-go): 配置拉取改为后台重试,根治启动竞态
此前 dispatcher(chat)/mcp-go(embedding) 启动时一次性请求控制面配置,3s 扑空即 降级,且只能干等热更新广播——若消费方早于 gateway 启动,会全程降级(LLM 跑桩、 RAG 无向量),必须手动重启才恢复。 改为:先订阅热更新,再后台 RequestConfigWithRetry(重试至拿到配置,容忍 gateway 晚启)。新增 shared/bus.RequestConfigWithRetry + dispatcher Subscriber 包装。 验收:故意先起 dispatcher/mcp-go、后起 gateway,二者自动重试拿到 chat/embedding 配置,无需手动重启;make test-go 全绿。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -91,4 +91,9 @@ func (s *Subscriber) SubscribeModelConfigUpdated(onUpdate func(*contract.ModelCo
|
||||
return s.inner.SubscribeConfigUpdated(contract.ConfigKindChat, onUpdate)
|
||||
}
|
||||
|
||||
// FetchModelConfigWithRetry 后台重试拉取初始对话模型配置(容忍 gateway 晚于 dispatcher 启动)。
|
||||
func (s *Subscriber) FetchModelConfigWithRetry(ctx context.Context, apply func(*contract.ModelConfig)) {
|
||||
s.inner.RequestConfigWithRetry(ctx, contract.ConfigKindChat, apply)
|
||||
}
|
||||
|
||||
func (s *Subscriber) Close() { s.inner.Close() }
|
||||
|
||||
Reference in New Issue
Block a user