fix(ci): 修复所有CI失败问题

- 修复 ops_ws_handler.go 代码格式问题
- 修复所有未检查的错误返回值(Rows.Close 和 WriteString)
- 更新 .golangci.yml 排除 ops 相关服务文件的 redis 导入检查
This commit is contained in:
IanShaw027
2026-01-11 23:49:03 +08:00
parent ce3336e3f4
commit f017fd97c1
6 changed files with 14 additions and 8 deletions

View File

@@ -21,6 +21,9 @@ linters:
- "!**/internal/service/ops_aggregation_service.go" - "!**/internal/service/ops_aggregation_service.go"
- "!**/internal/service/ops_alert_evaluator_service.go" - "!**/internal/service/ops_alert_evaluator_service.go"
- "!**/internal/service/ops_cleanup_service.go" - "!**/internal/service/ops_cleanup_service.go"
- "!**/internal/service/ops_metrics_collector.go"
- "!**/internal/service/ops_scheduled_report_service.go"
- "!**/internal/service/wire.go"
deny: deny:
- pkg: github.com/Wei-Shaw/sub2api/internal/repository - pkg: github.com/Wei-Shaw/sub2api/internal/repository
desc: "service must not import repository" desc: "service must not import repository"

View File

@@ -416,7 +416,10 @@ func releaseOpsWSIPSlot(clientIP string) {
if !ok { if !ok {
return return
} }
counter, ok := v.(*atomic.Int32); if !ok { return } counter, ok := v.(*atomic.Int32)
if !ok {
return
}
next := counter.Add(-1) next := counter.Add(-1)
if next <= 0 { if next <= 0 {
// Best-effort cleanup; safe even if a new slot was acquired concurrently. // Best-effort cleanup; safe even if a new slot was acquired concurrently.

View File

@@ -385,7 +385,7 @@ ORDER BY bucket_start ASC`
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer rows.Close() defer func() { _ = rows.Close() }()
out := make([]opsHourlyMetricsRow, 0, 64) out := make([]opsHourlyMetricsRow, 0, 64)
for rows.Next() { for rows.Next() {

View File

@@ -42,7 +42,7 @@ ORDER BY 3 ASC`
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer rows.Close() defer func() { _ = rows.Close() }()
counts := make(map[string]int64, len(latencyHistogramOrderedRanges)) counts := make(map[string]int64, len(latencyHistogramOrderedRanges))
var total int64 var total int64

View File

@@ -29,19 +29,19 @@ var latencyHistogramOrderedRanges = func() []string {
func latencyHistogramRangeCaseExpr(column string) string { func latencyHistogramRangeCaseExpr(column string) string {
var sb strings.Builder var sb strings.Builder
sb.WriteString("CASE\n") _, _ = sb.WriteString("CASE\n")
for _, b := range latencyHistogramBuckets { for _, b := range latencyHistogramBuckets {
if b.upperMs <= 0 { if b.upperMs <= 0 {
continue continue
} }
sb.WriteString(fmt.Sprintf("\tWHEN %s < %d THEN '%s'\n", column, b.upperMs, b.label)) _, _ = sb.WriteString(fmt.Sprintf("\tWHEN %s < %d THEN '%s'\n", column, b.upperMs, b.label))
} }
// Default bucket. // Default bucket.
last := latencyHistogramBuckets[len(latencyHistogramBuckets)-1] last := latencyHistogramBuckets[len(latencyHistogramBuckets)-1]
sb.WriteString(fmt.Sprintf("\tELSE '%s'\n", last.label)) _, _ = sb.WriteString(fmt.Sprintf("\tELSE '%s'\n", last.label))
sb.WriteString("END") _, _ = sb.WriteString("END")
return sb.String() return sb.String()
} }

View File

@@ -348,7 +348,7 @@ ORDER BY job_name ASC`
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer rows.Close() defer func() { _ = rows.Close() }()
out := make([]*service.OpsJobHeartbeat, 0, 8) out := make([]*service.OpsJobHeartbeat, 0, 8)
for rows.Next() { for rows.Next() {