Переглянути джерело

fix(internal/server): 修复 whitelistJob 消费者 panic 问题- 在 whitelistJob 消费者 goroutine 中添加了 defer 后的匿名函数
- 该匿名函数用于捕获潜在的 panic,并记录错误日志
-确保即使发生 panic,也能正常调用 j.wg.Done(),避免协程泄漏

fusu 1 місяць тому
батько
коміт
84cafdefe5
1 змінених файлів з 7 додано та 1 видалено
  1. 7 1
      internal/server/job.go

+ 7 - 1
internal/server/job.go

@@ -6,6 +6,7 @@ import (
 
 	"github.com/go-nunu/nunu-layout-advanced/internal/job"
 	"github.com/go-nunu/nunu-layout-advanced/pkg/log"
+	"go.uber.org/zap"
 )
 
 type JobServer struct {
@@ -40,7 +41,12 @@ func (j *JobServer) Start(ctx context.Context) error {
 	// 启动 WhitelistJob 的消费者
 	j.wg.Add(1)
 	go func() {
-		defer j.wg.Done()
+		defer func() {
+			if r := recover(); r != nil {
+				j.log.Error("whitelistJob consumer panic", zap.Any("error", r))
+			}
+			j.wg.Done()
+		}()
 		j.whitelistJob.DomainConsumer(ctx)
 	}()