From c0e4c5879224f09b706d511324e7ee3455aa943d Mon Sep 17 00:00:00 2001 From: dd-Rebecca <135697495+dd-Rebecca@users.noreply.github.com> Date: Thu, 4 Jan 2024 16:12:35 +0800 Subject: [PATCH] fix(eventbus): eventbus lock with nowait (#20) Co-authored-by: daijiaqi <daijiaqi@bytedance.com> --- eventbus/mysql/eventbus.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eventbus/mysql/eventbus.go b/eventbus/mysql/eventbus.go index ba758ed..dd883c6 100644 --- a/eventbus/mysql/eventbus.go +++ b/eventbus/mysql/eventbus.go @@ -325,7 +325,7 @@ func (e *EventBus) initService() error { func (e *EventBus) lockService(tx *gorm.DB) (*ServicePO, error) { service := &ServicePO{} - if err := tx.Clauses(clause.Locking{Strength: "UPDATE"}). + if err := tx.Clauses(clause.Locking{Strength: "UPDATE", Options: "NOWAIT"}). Where("name = ?", e.serviceName). First(service).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { @@ -504,7 +504,7 @@ func (e *EventBus) handleTransactions() error { ctx := e.ctxWithDB(context.TODO(), db) trans := make([]*Transaction, 0) - if err := db.Clauses(clause.Locking{Strength: "UPDATE"}).Where( + if err := db.Clauses(clause.Locking{Strength: "UPDATE", Options: "NOWAIT"}).Where( "service = ? and due_time < ?", e.serviceName, time.Now(), ).Find(&trans).Error; err != nil { return err -- GitLab