fix: Phase 5.3 - 统一使用 client.sessionMgr 调用 UpdateConfig
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user