You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@answer.apache.org by li...@apache.org on 2026/07/10 02:19:59 UTC

(answer) 13/25: fix: update goroutine handling and context imports for consistency

This is an automated email from the ASF dual-hosted git repository.

LinkinStars pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/answer.git

commit a00cb2d38c018187ca73d409400f3c0c8f15294c
Author: LinkinStars <li...@foxmail.com>
AuthorDate: Tue Jul 7 16:26:45 2026 +0800

    fix: update goroutine handling and context imports for consistency
---
 go.mod                                                |  2 +-
 internal/base/queue/queue.go                          |  6 ++----
 internal/base/queue/queue_test.go                     |  6 ++----
 internal/controller/template_render/tags.go           |  3 ++-
 internal/controller/template_render/userinfo.go       |  3 ++-
 internal/service/content/question_service.go          |  2 +-
 internal/service/export/email_service.go              |  2 +-
 internal/service/report/report_service.go             |  2 +-
 .../user_external_login_service.go                    | 19 +++++++------------
 9 files changed, 19 insertions(+), 26 deletions(-)

diff --git a/go.mod b/go.mod
index 7b68c180..5787c8b1 100644
--- a/go.mod
+++ b/go.mod
@@ -64,7 +64,6 @@ require (
 	go.uber.org/mock v0.6.0
 	golang.org/x/crypto v0.53.0
 	golang.org/x/image v0.20.0
-	golang.org/x/net v0.56.0
 	golang.org/x/term v0.44.0
 	golang.org/x/text v0.39.0
 	gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
@@ -171,6 +170,7 @@ require (
 	go.uber.org/zap v1.27.0 // indirect
 	golang.org/x/arch v0.10.0 // indirect
 	golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect
+	golang.org/x/net v0.56.0 // indirect
 	golang.org/x/sys v0.46.0 // indirect
 	golang.org/x/tools v0.47.0 // indirect
 	google.golang.org/protobuf v1.34.2 // indirect
diff --git a/internal/base/queue/queue.go b/internal/base/queue/queue.go
index b3a8757a..4389c292 100644
--- a/internal/base/queue/queue.go
+++ b/internal/base/queue/queue.go
@@ -102,13 +102,11 @@ func (q *Queue[T]) Close() {
 
 // startWorker starts the background goroutine that processes messages.
 func (q *Queue[T]) startWorker() {
-	q.wg.Add(1)
-	go func() {
-		defer q.wg.Done()
+	q.wg.Go(func() {
 		for msg := range q.queue {
 			q.processMessage(msg)
 		}
-	}()
+	})
 }
 
 // processMessage handles a single message with proper synchronization.
diff --git a/internal/base/queue/queue_test.go b/internal/base/queue/queue_test.go
index 23f0fda7..b84cbde0 100644
--- a/internal/base/queue/queue_test.go
+++ b/internal/base/queue/queue_test.go
@@ -200,13 +200,11 @@ func TestQueue_ConcurrentRegisterHandler(t *testing.T) {
 	// Concurrently register handlers - should not race
 	var wg sync.WaitGroup
 	for range 10 {
-		wg.Add(1)
-		go func() {
-			defer wg.Done()
+		wg.Go(func() {
 			q.RegisterHandler(func(ctx context.Context, msg *testMessage) error {
 				return nil
 			})
-		}()
+		})
 	}
 	wg.Wait()
 }
diff --git a/internal/controller/template_render/tags.go b/internal/controller/template_render/tags.go
index 6a6dacc9..d7798c63 100644
--- a/internal/controller/template_render/tags.go
+++ b/internal/controller/template_render/tags.go
@@ -20,10 +20,11 @@
 package templaterender
 
 import (
+	"context"
+
 	"github.com/apache/answer/internal/base/pager"
 	"github.com/apache/answer/internal/schema"
 	"github.com/jinzhu/copier"
-	"golang.org/x/net/context"
 )
 
 func (q *TemplateRenderController) TagList(ctx context.Context, req *schema.GetTagWithPageReq) (resp *pager.PageModel, err error) {
diff --git a/internal/controller/template_render/userinfo.go b/internal/controller/template_render/userinfo.go
index 1734f65c..eb4fb91c 100644
--- a/internal/controller/template_render/userinfo.go
+++ b/internal/controller/template_render/userinfo.go
@@ -20,8 +20,9 @@
 package templaterender
 
 import (
+	"context"
+
 	"github.com/apache/answer/internal/schema"
-	"golang.org/x/net/context"
 )
 
 func (q *TemplateRenderController) UserInfo(ctx context.Context, req *schema.GetOtherUserInfoByUsernameReq) (resp *schema.GetOtherUserInfoByUsernameResp, err error) {
diff --git a/internal/service/content/question_service.go b/internal/service/content/question_service.go
index 474c1fcd..73f66a4c 100644
--- a/internal/service/content/question_service.go
+++ b/internal/service/content/question_service.go
@@ -20,6 +20,7 @@
 package content
 
 import (
+	"context"
 	"encoding/json"
 	"fmt"
 	"strings"
@@ -64,7 +65,6 @@ import (
 	"github.com/jinzhu/copier"
 	"github.com/segmentfault/pacman/errors"
 	"github.com/segmentfault/pacman/log"
-	"golang.org/x/net/context"
 )
 
 // QuestionRepo question repository
diff --git a/internal/service/export/email_service.go b/internal/service/export/email_service.go
index bb00b828..5b649354 100644
--- a/internal/service/export/email_service.go
+++ b/internal/service/export/email_service.go
@@ -20,6 +20,7 @@
 package export
 
 import (
+	"context"
 	"crypto/tls"
 	"encoding/json"
 	"fmt"
@@ -40,7 +41,6 @@ import (
 	"github.com/apache/answer/internal/service/siteinfo_common"
 	"github.com/segmentfault/pacman/errors"
 	"github.com/segmentfault/pacman/log"
-	"golang.org/x/net/context"
 	"gopkg.in/gomail.v2"
 )
 
diff --git a/internal/service/report/report_service.go b/internal/service/report/report_service.go
index 84c15d59..3edbc1b4 100644
--- a/internal/service/report/report_service.go
+++ b/internal/service/report/report_service.go
@@ -20,6 +20,7 @@
 package report
 
 import (
+	"context"
 	"encoding/json"
 
 	"github.com/apache/answer/internal/service/eventqueue"
@@ -44,7 +45,6 @@ import (
 	"github.com/jinzhu/copier"
 	"github.com/segmentfault/pacman/errors"
 	"github.com/segmentfault/pacman/log"
-	"golang.org/x/net/context"
 )
 
 // ReportService user service
diff --git a/internal/service/user_external_login/user_external_login_service.go b/internal/service/user_external_login/user_external_login_service.go
index 2d209dbb..08f17ad4 100644
--- a/internal/service/user_external_login/user_external_login_service.go
+++ b/internal/service/user_external_login/user_external_login_service.go
@@ -186,18 +186,16 @@ func (us *UserExternalLoginService) ExternalLogin(
 		}, nil
 	}
 
-	oldUserInfo, exist, err := us.userRepo.GetByEmail(ctx, externalUserInfo.Email)
-	if err != nil {
+	if _, exist, err := us.userRepo.GetByEmail(ctx, externalUserInfo.Email); err != nil {
 		return nil, err
-	}
-	if exist {
+	} else if exist {
 		return &schema.UserExternalLoginResp{
 			ErrTitle: translator.Tr(handler.GetLangByCtx(ctx), reason.UserAccessDenied),
 			ErrMsg:   translator.Tr(handler.GetLangByCtx(ctx), reason.UserAccessDenied),
 		}, nil
 	}
 	// if user is not a member, register a new user
-	oldUserInfo, err = us.registerNewUser(ctx, externalUserInfo)
+	oldUserInfo, err := us.registerNewUser(ctx, externalUserInfo)
 	if err != nil {
 		return nil, err
 	}
@@ -363,21 +361,18 @@ func (us *UserExternalLoginService) ExternalLoginBindingUserSendEmail(
 		return &schema.ExternalLoginBindingUserSendEmailResp{}, nil
 	}
 
-	userInfo, exist, err := us.userRepo.GetByEmail(ctx, req.Email)
-	if err != nil {
+	if _, exist, err := us.userRepo.GetByEmail(ctx, req.Email); err != nil {
 		return nil, err
-	}
-	if exist && !req.Must {
+	} else if exist && !req.Must {
 		resp.EmailExistAndMustBeConfirmed = true
 		return resp, nil
-	}
-	if exist {
+	} else if exist {
 		resp.EmailExistAndMustBeConfirmed = true
 		return resp, nil
 	}
 
 	externalLoginInfo.Email = req.Email
-	userInfo, err = us.registerNewUser(ctx, externalLoginInfo)
+	userInfo, err := us.registerNewUser(ctx, externalLoginInfo)
 	if err != nil {
 		return nil, err
 	}