From f831e304031f3a0f2db27253a691b0ada6c0ffbc Mon Sep 17 00:00:00 2001 From: colinlyguo Date: Sat, 10 May 2025 18:14:52 +0800 Subject: [PATCH 1/2] fix(rollup-relayer): update commit status logic --- common/version/version.go | 2 +- rollup/internal/orm/batch.go | 16 ++++++---------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/common/version/version.go b/common/version/version.go index d01945d4bd..263fbf49c3 100644 --- a/common/version/version.go +++ b/common/version/version.go @@ -5,7 +5,7 @@ import ( "runtime/debug" ) -var tag = "v4.5.7" +var tag = "v4.5.8" var commit = func() string { if info, ok := debug.ReadBuildInfo(); ok { diff --git a/rollup/internal/orm/batch.go b/rollup/internal/orm/batch.go index 2d83c4791d..95f5a7bf82 100644 --- a/rollup/internal/orm/batch.go +++ b/rollup/internal/orm/batch.go @@ -386,7 +386,12 @@ func (o *Batch) UpdateRollupStatus(ctx context.Context, hash string, status type func (o *Batch) UpdateCommitTxHashAndRollupStatus(ctx context.Context, hash string, commitTxHash string, status types.RollupStatus, dbTX ...*gorm.DB) error { updateFields := make(map[string]interface{}) updateFields["commit_tx_hash"] = commitTxHash - updateFields["rollup_status"] = int(status) + updateFields["rollup_status"] = gorm.Expr( + `CASE + WHEN rollup_status NOT IN (?, ?) THEN ? + ELSE rollup_status + END`, + types.RollupFinalizing, types.RollupFinalized, int(status)) if status == types.RollupCommitted { updateFields["committed_at"] = utils.NowUTC() } @@ -397,15 +402,6 @@ func (o *Batch) UpdateCommitTxHashAndRollupStatus(ctx context.Context, hash stri } db = db.WithContext(ctx) - var currentBatch Batch - if err := db.Where("hash", hash).First(¤tBatch).Error; err != nil { - return fmt.Errorf("Batch.UpdateCommitTxHashAndRollupStatus error when querying current status: %w, batch hash: %v", err, hash) - } - - if types.RollupStatus(currentBatch.RollupStatus) == types.RollupFinalizing || types.RollupStatus(currentBatch.RollupStatus) == types.RollupFinalized { - return nil - } - db = db.Model(&Batch{}) db = db.Where("hash", hash) From 5ae47ec9c1062947bd7fa040dcc2f95764bb6041 Mon Sep 17 00:00:00 2001 From: colinlyguo Date: Sat, 10 May 2025 18:32:22 +0800 Subject: [PATCH 2/2] fix unit test --- rollup/internal/orm/orm_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rollup/internal/orm/orm_test.go b/rollup/internal/orm/orm_test.go index b53299bd3b..7b6f9496a5 100644 --- a/rollup/internal/orm/orm_test.go +++ b/rollup/internal/orm/orm_test.go @@ -314,7 +314,7 @@ func TestBatchOrm(t *testing.T) { updatedBatch, err = batchOrm.GetLatestBatch(context.Background()) assert.NoError(t, err) assert.NotNil(t, updatedBatch) - assert.Equal(t, "", updatedBatch.CommitTxHash) + assert.Equal(t, "commitTxHash", updatedBatch.CommitTxHash) assert.Equal(t, types.RollupFinalized, types.RollupStatus(updatedBatch.RollupStatus)) err = batchOrm.UpdateFinalizeTxHashAndRollupStatus(context.Background(), batchHash2, "finalizeTxHash", types.RollupFinalizeFailed)