fix: Phase 5.3 - 统一使用 client.sessionMgr 调用 UpdateConfig

This commit is contained in:
hhs
2026-06-13 16:15:17 +08:00
parent 314554ded7
commit 085e19038b

View File

@@ -220,7 +220,7 @@ func serveWS(c *gin.Context, sessionMgr session.Manager, orch orchestrator.Orche
DetailLevel: msg.Payload.DetailLevel, DetailLevel: msg.Payload.DetailLevel,
Language: msg.Payload.Language, Language: msg.Payload.Language,
} }
if err := sessionMgr.UpdateConfig(context.Background(), sessionID, patch); err != nil { if err := client.sessionMgr.UpdateConfig(context.Background(), sessionID, patch); err != nil {
errors.SendWSError(client, errors.CodeInternalError, "", err) errors.SendWSError(client, errors.CodeInternalError, "", err)
continue continue
} }
@@ -229,11 +229,16 @@ func serveWS(c *gin.Context, sessionMgr session.Manager, orch orchestrator.Orche
case "interrupt": case "interrupt":
logger.Log.Infow("interrupt received", "session", sessionID) logger.Log.Infow("interrupt received", "session", sessionID)
// 获取活跃请求 ID(实际 cancel 在 Phase 5 接入 orchestrator 后实现) // 获取活跃请求 ID 并取消
reqID, _ := sessionMgr.GetActiveRequestID(context.Background(), sessionID) reqID, _ := client.sessionMgr.GetActiveRequestID(context.Background(), sessionID)
if reqID != "" { if reqID != "" {
_ = sessionMgr.ClearActiveRequest(context.Background(), sessionID) client.mu.Lock()
// TODO: 取消对应 context cancel func if cancel, ok := client.cancelFuncs[reqID]; ok {
cancel()
delete(client.cancelFuncs, reqID)
}
client.mu.Unlock()
_ = client.sessionMgr.ClearActiveRequest(context.Background(), sessionID)
} }
default: default:
@@ -247,6 +252,15 @@ func serveWS(c *gin.Context, sessionMgr session.Manager, orch orchestrator.Orche
close(done) close(done)
// 取消所有活跃请求
client.mu.Lock()
for reqID, cancel := range client.cancelFuncs {
logger.Log.Infow("canceling active request on disconnect", "session", sessionID, "request", reqID)
cancel()
}
client.cancelFuncs = make(map[string]context.CancelFunc)
client.mu.Unlock()
// 断开连接时不销毁会话,让其自然过期(支持重连恢复) // 断开连接时不销毁会话,让其自然过期(支持重连恢复)
logger.Log.Infow("client disconnected", "session", sessionID) logger.Log.Infow("client disconnected", "session", sessionID)
} }