Skip to content

Commit 5d386ff

Browse files
committed
Update.
1 parent c3d6a9b commit 5d386ff

File tree

3 files changed

+34
-13
lines changed

3 files changed

+34
-13
lines changed

cmd/dashboard/controller/member_api.go

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,14 +131,17 @@ func (ma *memberAPI) issueNewToken(c *gin.Context) {
131131
if singleton.Conf.DatabaseType == "badger" {
132132
// 为新API令牌生成ID
133133
token.ID = uint64(time.Now().UnixNano())
134-
err = db.DB.SaveModel("api_token", token.ID, token)
134+
// 使用ApiTokenOps保存
135+
apiTokenOps := db.NewApiTokenOps(db.DB)
136+
err = apiTokenOps.SaveApiToken(token)
135137
if err != nil {
136138
c.JSON(http.StatusOK, model.Response{
137139
Code: http.StatusBadRequest,
138140
Message: fmt.Sprintf("保存API令牌失败:%s", err),
139141
})
140142
return
141143
}
144+
log.Printf("API Token已保存到BadgerDB: %s (Note: %s)", token.Token, token.Note)
142145
} else if singleton.DB != nil {
143146
err = singleton.DB.Create(token).Error
144147
if err != nil {
@@ -618,7 +621,12 @@ func (ma *memberAPI) addOrEditServer(c *gin.Context) {
618621

619622
// BadgerDB 模式下使用 BadgerDB 操作
620623
if singleton.Conf.DatabaseType == "badger" {
621-
err = db.DB.SaveModel("server", s.ID, &s)
624+
// 使用ServerOps来确保Secret字段正确保存
625+
serverOps := db.NewServerOps(db.DB)
626+
err = serverOps.SaveServer(&s)
627+
if err == nil {
628+
log.Printf("服务器 %d 的Secret已保存到BadgerDB: %s", s.ID, s.Secret)
629+
}
622630
} else if singleton.DB != nil {
623631
err = singleton.DB.Save(&s).Error
624632
} else {
@@ -1000,13 +1008,16 @@ func (ma *memberAPI) batchUpdateServerGroup(c *gin.Context) {
10001008
singleton.ServerLock.RUnlock()
10011009

10021010
server.Tag = req.Group
1003-
if err := db.DB.SaveModel("server", serverID, &server); err != nil {
1011+
// 使用ServerOps保存到数据库,确保Secret字段正确保存
1012+
serverOps := db.NewServerOps(db.DB)
1013+
if err := serverOps.SaveServer(&server); err != nil {
10041014
c.JSON(http.StatusOK, model.Response{
10051015
Code: http.StatusBadRequest,
10061016
Message: fmt.Sprintf("更新服务器 %d 失败: %v", serverID, err),
10071017
})
10081018
return
10091019
}
1020+
log.Printf("批量更新服务器 %d 的Secret已保存: %s", serverID, server.Secret)
10101021
}
10111022
} else if singleton.DB != nil {
10121023
if err := singleton.DB.Model(&model.Server{}).Where("id in (?)", req.Servers).Update("tag", req.Group).Error; err != nil {

service/rpc/server.go

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,11 @@ func (s *ServerHandler) RequestTask(h *pb.Host, stream pb.ServerService_RequestT
175175
// 连接断开时清理资源,增强错误处理
176176
if ctxErr := ctx.Err(); ctxErr != nil {
177177
// 检查是否为网络连接错误或超时错误
178-
if isConnectionError(ctxErr) || ctxErr == context.DeadlineExceeded {
179-
// 静默处理网络连接错误和正常超时,避免日志干扰
180-
log.Printf("RequestTask连接正常断开: 客户端ID %d", clientID)
178+
if isConnectionError(ctxErr) || ctxErr == context.DeadlineExceeded || ctxErr == context.Canceled {
179+
// 静默处理网络连接错误、正常超时和取消,避免日志干扰
180+
if singleton.Conf.Debug {
181+
log.Printf("RequestTask连接正常断开: 客户端ID %d, 原因: %v", clientID, ctxErr)
182+
}
181183
} else {
182184
log.Printf("RequestTask连接上下文错误: %v", ctxErr)
183185
}
@@ -236,15 +238,20 @@ func (s *ServerHandler) RequestTask(h *pb.Host, stream pb.ServerService_RequestT
236238
case <-ctx.Done():
237239
// 超时或连接取消,增强错误分类
238240
if ctx.Err() == context.DeadlineExceeded {
239-
log.Printf("客户端 %d RequestTask连接超时 (20分钟)", clientID)
240-
return fmt.Errorf("request task timeout after 20 minutes")
241+
if singleton.Conf.Debug {
242+
log.Printf("客户端 %d RequestTask连接超时 (20分钟)", clientID)
243+
}
244+
return nil // 将超时视为正常断开,不返回错误
241245
}
242-
// 检查是否为网络连接错误
243-
if isConnectionError(ctx.Err()) {
244-
log.Printf("客户端 %d 网络连接异常: %v", clientID, ctx.Err())
245-
return nil // 将网络连接错误视为正常断开
246+
// 检查是否为网络连接错误或取消
247+
if isConnectionError(ctx.Err()) || ctx.Err() == context.Canceled {
248+
if singleton.Conf.Debug {
249+
log.Printf("客户端 %d 连接正常断开: %v", clientID, ctx.Err())
250+
}
251+
return nil // 将网络连接错误和取消视为正常断开
246252
}
247-
return ctx.Err()
253+
log.Printf("客户端 %d RequestTask异常断开: %v", clientID, ctx.Err())
254+
return nil // 即使异常也不返回错误,避免程序重启
248255
}
249256
}
250257

service/singleton/servicesentinel.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,9 @@ func (ss *ServiceSentinel) handleServiceReport(r ReportData) {
530530
err := monitorOps.SaveMonitorHistory(h)
531531
if err != nil {
532532
log.Printf("NG>> BadgerDB TCP/ICMP监控数据保存失败 (MonitorID: %d): %v", h.MonitorID, err)
533+
} else {
534+
log.Printf("BadgerDB TCP/ICMP监控数据已保存 (MonitorID: %d, ServerID: %d, Delay: %.2f)",
535+
h.MonitorID, h.ServerID, h.AvgDelay)
533536
}
534537
}
535538
}(history)

0 commit comments

Comments
 (0)