mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-11 01:36:37 +08:00
[修复] 修复 WS 连接下更新无法下发
This commit is contained in:
@@ -223,8 +223,13 @@ func handleAgentWSStatus(c *gin.Context, node *model.Node, message service.Agent
|
|||||||
slog.Debug("agent ws status payload decode failed", "node_id", node.NodeID, "error", err)
|
slog.Debug("agent ws status payload decode failed", "node_id", node.NodeID, "error", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
freshNode, err := model.GetNodeByNodeID(node.NodeID)
|
||||||
|
if err != nil {
|
||||||
|
slog.Debug("agent ws status reload node failed", "node_id", node.NodeID, "error", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
payload.IP = service.ResolveReportedNodeIP(payload.IP, c.Request.RemoteAddr)
|
payload.IP = service.ResolveReportedNodeIP(payload.IP, c.Request.RemoteAddr)
|
||||||
response, err := service.HeartbeatNode(node, payload)
|
response, err := service.HeartbeatNode(freshNode, payload)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slog.Debug("agent ws status handling failed", "node_id", node.NodeID, "error", err)
|
slog.Debug("agent ws status handling failed", "node_id", node.NodeID, "error", err)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -171,6 +171,11 @@ func RequestNodeAgentUpdate(id uint, input NodeAgentUpdateInput) (*NodeView, err
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
refreshAgentTokenCache(node)
|
refreshAgentTokenCache(node)
|
||||||
|
if SendAgentWSSettings(node.NodeID, buildAgentSettings(node, true, channel.String(), tagName, node.RestartOpenrestyRequested)) {
|
||||||
|
slog.Debug("agent manual update pushed via ws", "node_id", node.NodeID, "channel", channel.String(), "tag", tagName)
|
||||||
|
} else {
|
||||||
|
slog.Debug("agent manual update waiting for next heartbeat", "node_id", node.NodeID, "channel", channel.String(), "tag", tagName)
|
||||||
|
}
|
||||||
slog.Info("agent manual update requested", "node_id", node.NodeID, "name", node.Name, "channel", channel.String(), "tag", tagName)
|
slog.Info("agent manual update requested", "node_id", node.NodeID, "name", node.Name, "channel", channel.String(), "tag", tagName)
|
||||||
return buildNodeView(node), nil
|
return buildNodeView(node), nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,6 +120,9 @@ func TestRequestNodeAgentPreviewUpdate(t *testing.T) {
|
|||||||
SetUpdateHTTPClientForTest(originalClient)
|
SetUpdateHTTPClientForTest(originalClient)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
wsClient := RegisterAgentWSClient(node.NodeID)
|
||||||
|
defer UnregisterAgentWSClient(wsClient)
|
||||||
|
|
||||||
updated, err := RequestNodeAgentUpdate(node.ID, NodeAgentUpdateInput{
|
updated, err := RequestNodeAgentUpdate(node.ID, NodeAgentUpdateInput{
|
||||||
Channel: "preview",
|
Channel: "preview",
|
||||||
TagName: "v0.5.0-rc.1",
|
TagName: "v0.5.0-rc.1",
|
||||||
@@ -136,6 +139,21 @@ func TestRequestNodeAgentPreviewUpdate(t *testing.T) {
|
|||||||
if updated.UpdateTag != "v0.5.0-rc.1" {
|
if updated.UpdateTag != "v0.5.0-rc.1" {
|
||||||
t.Fatalf("unexpected update tag: %s", updated.UpdateTag)
|
t.Fatalf("unexpected update tag: %s", updated.UpdateTag)
|
||||||
}
|
}
|
||||||
|
select {
|
||||||
|
case message := <-wsClient.Messages():
|
||||||
|
if message.Type != AgentWSMessageTypeSettings {
|
||||||
|
t.Fatalf("expected settings message, got %s", message.Type)
|
||||||
|
}
|
||||||
|
settings, ok := message.Payload.(*AgentSettings)
|
||||||
|
if !ok {
|
||||||
|
t.Fatalf("expected agent settings payload, got %T", message.Payload)
|
||||||
|
}
|
||||||
|
if !settings.UpdateNow || settings.UpdateChannel != "preview" || settings.UpdateTag != "v0.5.0-rc.1" {
|
||||||
|
t.Fatalf("unexpected pushed settings: %+v", settings)
|
||||||
|
}
|
||||||
|
case <-time.After(time.Second):
|
||||||
|
t.Fatal("expected websocket settings push for manual update")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestHeartbeatNodeReturnsPreviewUpdateSettings(t *testing.T) {
|
func TestHeartbeatNodeReturnsPreviewUpdateSettings(t *testing.T) {
|
||||||
|
|||||||
Reference in New Issue
Block a user