diff --git a/.github/workflows/coordinator.yml b/.github/workflows/coordinator.yml index b441a78a9..1c84f97c7 100644 --- a/.github/workflows/coordinator.yml +++ b/.github/workflows/coordinator.yml @@ -39,7 +39,7 @@ jobs: - name: Install Go uses: actions/setup-go@v2 with: - go-version: 1.20.x + go-version: 1.21.x - name: Checkout code uses: actions/checkout@v2 - name: Lint @@ -54,7 +54,7 @@ jobs: - name: Install Go uses: actions/setup-go@v2 with: - go-version: 1.20.x + go-version: 1.21.x - name: Checkout code uses: actions/checkout@v2 - name: Install goimports @@ -95,7 +95,7 @@ jobs: - name: Install Go uses: actions/setup-go@v2 with: - go-version: 1.20.x + go-version: 1.21.x - name: Checkout code uses: actions/checkout@v2 - name: Install Solc diff --git a/.github/workflows/intermediate-docker.yml b/.github/workflows/intermediate-docker.yml index 50a6a89d0..f60256205 100644 --- a/.github/workflows/intermediate-docker.yml +++ b/.github/workflows/intermediate-docker.yml @@ -7,7 +7,7 @@ on: description: 'Go version' required: true type: string - default: '1.20' + default: '1.21' RUST_VERSION: description: 'Rust toolchain version' required: true diff --git a/build/dockerfiles/bridgehistoryapi-api.Dockerfile b/build/dockerfiles/bridgehistoryapi-api.Dockerfile index c78a31c65..9c6105d99 100644 --- a/build/dockerfiles/bridgehistoryapi-api.Dockerfile +++ b/build/dockerfiles/bridgehistoryapi-api.Dockerfile @@ -1,5 +1,5 @@ # Download Go dependencies -FROM golang:1.20-alpine3.16 as base +FROM golang:1.21-alpine3.19 as base WORKDIR /src COPY go.mod* ./ diff --git a/build/dockerfiles/bridgehistoryapi-db-cli.Dockerfile b/build/dockerfiles/bridgehistoryapi-db-cli.Dockerfile index db7b5919d..6797d9e92 100644 --- a/build/dockerfiles/bridgehistoryapi-db-cli.Dockerfile +++ b/build/dockerfiles/bridgehistoryapi-db-cli.Dockerfile @@ -1,5 +1,5 @@ # Download Go dependencies -FROM golang:1.20-alpine3.16 as base +FROM golang:1.21-alpine3.19 as base WORKDIR /src COPY ./bridge-history-api/go.* ./ diff --git a/build/dockerfiles/bridgehistoryapi-fetcher.Dockerfile b/build/dockerfiles/bridgehistoryapi-fetcher.Dockerfile index 79ecc30ab..ea06009bf 100644 --- a/build/dockerfiles/bridgehistoryapi-fetcher.Dockerfile +++ b/build/dockerfiles/bridgehistoryapi-fetcher.Dockerfile @@ -1,5 +1,5 @@ # Download Go dependencies -FROM golang:1.20-alpine3.16 as base +FROM golang:1.21-alpine3.19 as base WORKDIR /src COPY go.mod* ./ diff --git a/build/dockerfiles/coordinator-api.Dockerfile b/build/dockerfiles/coordinator-api.Dockerfile index 55ae324f8..93a5e0763 100644 --- a/build/dockerfiles/coordinator-api.Dockerfile +++ b/build/dockerfiles/coordinator-api.Dockerfile @@ -1,5 +1,5 @@ # Build libzkp dependency -FROM scrolltech/go-rust-builder:go-1.20-rust-nightly-2022-12-10 as chef +FROM scrolltech/go-rust-builder:go-1.21-rust-nightly-2022-12-10 as chef WORKDIR app FROM chef as planner @@ -17,7 +17,7 @@ RUN find ./ | grep libzktrie.so | xargs -I{} cp {} /app/target/release/ # Download Go dependencies -FROM scrolltech/go-rust-builder:go-1.20-rust-nightly-2022-12-10 as base +FROM scrolltech/go-rust-builder:go-1.21-rust-nightly-2022-12-10 as base WORKDIR /src COPY go.work* ./ COPY ./rollup/go.* ./rollup/ diff --git a/build/dockerfiles/coordinator-cron.Dockerfile b/build/dockerfiles/coordinator-cron.Dockerfile index a7db580c4..d70dcd4b1 100644 --- a/build/dockerfiles/coordinator-cron.Dockerfile +++ b/build/dockerfiles/coordinator-cron.Dockerfile @@ -1,5 +1,5 @@ # Download Go dependencies -FROM scrolltech/go-alpine-builder:1.20 as base +FROM scrolltech/go-alpine-builder:1.21 as base WORKDIR /src COPY go.work* ./ diff --git a/build/dockerfiles/db_cli.Dockerfile b/build/dockerfiles/db_cli.Dockerfile index a3c9d5c7d..a362083d6 100644 --- a/build/dockerfiles/db_cli.Dockerfile +++ b/build/dockerfiles/db_cli.Dockerfile @@ -1,5 +1,5 @@ # Download Go dependencies -FROM scrolltech/go-alpine-builder:1.20 as base +FROM scrolltech/go-alpine-builder:1.21 as base WORKDIR /src COPY go.work* ./ diff --git a/build/dockerfiles/event_watcher.Dockerfile b/build/dockerfiles/event_watcher.Dockerfile index 23a7bf6f0..e9704b6a1 100644 --- a/build/dockerfiles/event_watcher.Dockerfile +++ b/build/dockerfiles/event_watcher.Dockerfile @@ -1,5 +1,5 @@ # Download Go dependencies -FROM scrolltech/go-alpine-builder:1.20 as base +FROM scrolltech/go-alpine-builder:1.21 as base WORKDIR /src COPY go.work* ./ diff --git a/build/dockerfiles/gas_oracle.Dockerfile b/build/dockerfiles/gas_oracle.Dockerfile index 061e04888..afc4976ec 100644 --- a/build/dockerfiles/gas_oracle.Dockerfile +++ b/build/dockerfiles/gas_oracle.Dockerfile @@ -1,5 +1,5 @@ # Download Go dependencies -FROM scrolltech/go-alpine-builder:1.20 as base +FROM scrolltech/go-alpine-builder:1.21 as base WORKDIR /src COPY go.work* ./ diff --git a/build/dockerfiles/intermediate/Makefile b/build/dockerfiles/intermediate/Makefile index fc41e5e3d..961c86f1e 100644 --- a/build/dockerfiles/intermediate/Makefile +++ b/build/dockerfiles/intermediate/Makefile @@ -1,5 +1,5 @@ ifeq ($(GO_VERSION),) - GO_VERSION=1.20 + GO_VERSION=1.21 endif ifeq ($(RUST_VERSION),) RUST_VERSION=nightly-2022-12-10 diff --git a/build/dockerfiles/intermediate/cuda-go-rust-builder.Dockerfile b/build/dockerfiles/intermediate/cuda-go-rust-builder.Dockerfile index 7c52de8be..943c092f0 100644 --- a/build/dockerfiles/intermediate/cuda-go-rust-builder.Dockerfile +++ b/build/dockerfiles/intermediate/cuda-go-rust-builder.Dockerfile @@ -1,5 +1,5 @@ ARG CUDA_VERSION=11.7.1 -ARG GO_VERSION=1.20 +ARG GO_VERSION=1.21 ARG RUST_VERSION=nightly-2022-12-10 ARG CARGO_CHEF_TAG=0.1.41 diff --git a/build/dockerfiles/intermediate/go-alpine-builder.Dockerfile b/build/dockerfiles/intermediate/go-alpine-builder.Dockerfile index c6f7fb58e..9aa9973db 100644 --- a/build/dockerfiles/intermediate/go-alpine-builder.Dockerfile +++ b/build/dockerfiles/intermediate/go-alpine-builder.Dockerfile @@ -1,4 +1,4 @@ -ARG GO_VERSION=1.20 +ARG GO_VERSION=1.21 FROM golang:${GO_VERSION}-alpine diff --git a/build/dockerfiles/intermediate/go-rust-alpine-builder.Dockerfile b/build/dockerfiles/intermediate/go-rust-alpine-builder.Dockerfile index a7388a66d..50a1c99ce 100644 --- a/build/dockerfiles/intermediate/go-rust-alpine-builder.Dockerfile +++ b/build/dockerfiles/intermediate/go-rust-alpine-builder.Dockerfile @@ -1,4 +1,4 @@ -ARG GO_VERSION=1.20 +ARG GO_VERSION=1.21 ARG RUST_VERSION=nightly-2022-12-10 ARG CARGO_CHEF_TAG=0.1.41 diff --git a/build/dockerfiles/intermediate/go-rust-builder.Dockerfile b/build/dockerfiles/intermediate/go-rust-builder.Dockerfile index 06a5734c7..5fd4f3dcc 100644 --- a/build/dockerfiles/intermediate/go-rust-builder.Dockerfile +++ b/build/dockerfiles/intermediate/go-rust-builder.Dockerfile @@ -1,4 +1,4 @@ -ARG GO_VERSION=1.20 +ARG GO_VERSION=1.21 ARG RUST_VERSION=nightly-2022-12-10 ARG CARGO_CHEF_TAG=0.1.41 diff --git a/build/dockerfiles/rollup_relayer.Dockerfile b/build/dockerfiles/rollup_relayer.Dockerfile index 8ea923146..8fb867ad1 100644 --- a/build/dockerfiles/rollup_relayer.Dockerfile +++ b/build/dockerfiles/rollup_relayer.Dockerfile @@ -1,5 +1,5 @@ # Download Go dependencies -FROM scrolltech/go-alpine-builder:1.20 as base +FROM scrolltech/go-alpine-builder:1.21 as base WORKDIR /src COPY go.work* ./ diff --git a/coordinator/go.mod b/coordinator/go.mod index 64c415dbf..00cc53fc0 100644 --- a/coordinator/go.mod +++ b/coordinator/go.mod @@ -1,6 +1,6 @@ module scroll-tech/coordinator -go 1.20 +go 1.21 require ( github.com/appleboy/gin-jwt/v2 v2.9.1 diff --git a/coordinator/internal/logic/auth/login.go b/coordinator/internal/logic/auth/login.go index be6ad6752..85aef0400 100644 --- a/coordinator/internal/logic/auth/login.go +++ b/coordinator/internal/logic/auth/login.go @@ -21,5 +21,5 @@ func NewLoginLogic(db *gorm.DB) *LoginLogic { // InsertChallengeString insert and check the challenge string is existed func (l *LoginLogic) InsertChallengeString(ctx *gin.Context, challenge string) error { - return l.challengeOrm.InsertChallenge(ctx, challenge) + return l.challengeOrm.InsertChallenge(ctx.Copy(), challenge) } diff --git a/coordinator/internal/logic/provertask/batch_prover_task.go b/coordinator/internal/logic/provertask/batch_prover_task.go index 20c3e296d..ea3dc7677 100644 --- a/coordinator/internal/logic/provertask/batch_prover_task.go +++ b/coordinator/internal/logic/provertask/batch_prover_task.go @@ -83,7 +83,7 @@ func (bp *BatchProverTask) Assign(ctx *gin.Context, getTaskParameter *coordinato var endChunkIndex uint64 = math.MaxInt64 fromBlockNum, toBlockNum := forks.BlockRange(hardForkNumber, bp.forkHeights) if fromBlockNum != 0 { - startChunk, chunkErr := bp.chunkOrm.GetChunkByStartBlockNumber(ctx, fromBlockNum) + startChunk, chunkErr := bp.chunkOrm.GetChunkByStartBlockNumber(ctx.Copy(), fromBlockNum) if chunkErr != nil { log.Error("failed to get fork start chunk index", "forkName", taskCtx.HardForkName, "fromBlockNumber", fromBlockNum, "err", chunkErr) return nil, ErrCoordinatorInternalFailure @@ -94,7 +94,7 @@ func (bp *BatchProverTask) Assign(ctx *gin.Context, getTaskParameter *coordinato startChunkIndex = startChunk.Index } if toBlockNum != math.MaxInt64 { - toChunk, chunkErr := bp.chunkOrm.GetChunkByStartBlockNumber(ctx, toBlockNum) + toChunk, chunkErr := bp.chunkOrm.GetChunkByStartBlockNumber(ctx.Copy(), toBlockNum) if chunkErr != nil { log.Error("failed to get fork end chunk index", "forkName", taskCtx.HardForkName, "toBlockNumber", toBlockNum, "err", chunkErr) return nil, ErrCoordinatorInternalFailure @@ -112,7 +112,7 @@ func (bp *BatchProverTask) Assign(ctx *gin.Context, getTaskParameter *coordinato for i := 0; i < 5; i++ { var getTaskError error var tmpBatchTask *orm.Batch - tmpBatchTask, getTaskError = bp.batchOrm.GetAssignedBatch(ctx, startChunkIndex, endChunkIndex, maxActiveAttempts, maxTotalAttempts) + tmpBatchTask, getTaskError = bp.batchOrm.GetAssignedBatch(ctx.Copy(), startChunkIndex, endChunkIndex, maxActiveAttempts, maxTotalAttempts) if getTaskError != nil { log.Error("failed to get assigned batch proving tasks", "height", getTaskParameter.ProverHeight, "err", getTaskError) return nil, ErrCoordinatorInternalFailure @@ -121,7 +121,7 @@ func (bp *BatchProverTask) Assign(ctx *gin.Context, getTaskParameter *coordinato // Why here need get again? In order to support a task can assign to multiple prover, need also assign `ProvingTaskAssigned` // batch to prover. But use `proving_status in (1, 2)` will not use the postgres index. So need split the sql. if tmpBatchTask == nil { - tmpBatchTask, getTaskError = bp.batchOrm.GetUnassignedBatch(ctx, startChunkIndex, endChunkIndex, maxActiveAttempts, maxTotalAttempts) + tmpBatchTask, getTaskError = bp.batchOrm.GetUnassignedBatch(ctx.Copy(), startChunkIndex, endChunkIndex, maxActiveAttempts, maxTotalAttempts) if getTaskError != nil { log.Error("failed to get unassigned batch proving tasks", "height", getTaskParameter.ProverHeight, "err", getTaskError) return nil, ErrCoordinatorInternalFailure @@ -133,7 +133,7 @@ func (bp *BatchProverTask) Assign(ctx *gin.Context, getTaskParameter *coordinato return nil, nil } - rowsAffected, updateAttemptsErr := bp.batchOrm.UpdateBatchAttempts(ctx, tmpBatchTask.Index, tmpBatchTask.ActiveAttempts, tmpBatchTask.TotalAttempts) + rowsAffected, updateAttemptsErr := bp.batchOrm.UpdateBatchAttempts(ctx.Copy(), tmpBatchTask.Index, tmpBatchTask.ActiveAttempts, tmpBatchTask.TotalAttempts) if updateAttemptsErr != nil { log.Error("failed to update batch attempts", "height", getTaskParameter.ProverHeight, "err", updateAttemptsErr) return nil, ErrCoordinatorInternalFailure @@ -168,13 +168,13 @@ func (bp *BatchProverTask) Assign(ctx *gin.Context, getTaskParameter *coordinato } // Store session info. - if err = bp.proverTaskOrm.InsertProverTask(ctx, &proverTask); err != nil { + if err = bp.proverTaskOrm.InsertProverTask(ctx.Copy(), &proverTask); err != nil { bp.recoverActiveAttempts(ctx, batchTask) log.Error("insert batch prover task info fail", "taskID", batchTask.Hash, "publicKey", taskCtx.PublicKey, "err", err) return nil, ErrCoordinatorInternalFailure } - taskMsg, err := bp.formatProverTask(ctx, &proverTask) + taskMsg, err := bp.formatProverTask(ctx.Copy(), &proverTask) if err != nil { bp.recoverActiveAttempts(ctx, batchTask) log.Error("format prover task failure", "hash", batchTask.Hash, "err", err) @@ -242,7 +242,7 @@ func (bp *BatchProverTask) formatProverTask(ctx context.Context, task *orm.Prove } func (bp *BatchProverTask) recoverActiveAttempts(ctx *gin.Context, batchTask *orm.Batch) { - if err := bp.chunkOrm.DecreaseActiveAttemptsByHash(ctx, batchTask.Hash); err != nil { + if err := bp.chunkOrm.DecreaseActiveAttemptsByHash(ctx.Copy(), batchTask.Hash); err != nil { log.Error("failed to recover batch active attempts", "hash", batchTask.Hash, "error", err) } } diff --git a/coordinator/internal/logic/provertask/chunk_prover_task.go b/coordinator/internal/logic/provertask/chunk_prover_task.go index fe079153f..93c16212c 100644 --- a/coordinator/internal/logic/provertask/chunk_prover_task.go +++ b/coordinator/internal/logic/provertask/chunk_prover_task.go @@ -85,7 +85,7 @@ func (cp *ChunkProverTask) Assign(ctx *gin.Context, getTaskParameter *coordinato for i := 0; i < 5; i++ { var getTaskError error var tmpChunkTask *orm.Chunk - tmpChunkTask, getTaskError = cp.chunkOrm.GetAssignedChunk(ctx, fromBlockNum, toBlockNum, maxActiveAttempts, maxTotalAttempts) + tmpChunkTask, getTaskError = cp.chunkOrm.GetAssignedChunk(ctx.Copy(), fromBlockNum, toBlockNum, maxActiveAttempts, maxTotalAttempts) if getTaskError != nil { log.Error("failed to get assigned chunk proving tasks", "height", getTaskParameter.ProverHeight, "err", getTaskError) return nil, ErrCoordinatorInternalFailure @@ -94,7 +94,7 @@ func (cp *ChunkProverTask) Assign(ctx *gin.Context, getTaskParameter *coordinato // Why here need get again? In order to support a task can assign to multiple prover, need also assign `ProvingTaskAssigned` // chunk to prover. But use `proving_status in (1, 2)` will not use the postgres index. So need split the sql. if tmpChunkTask == nil { - tmpChunkTask, getTaskError = cp.chunkOrm.GetUnassignedChunk(ctx, fromBlockNum, toBlockNum, maxActiveAttempts, maxTotalAttempts) + tmpChunkTask, getTaskError = cp.chunkOrm.GetUnassignedChunk(ctx.Copy(), fromBlockNum, toBlockNum, maxActiveAttempts, maxTotalAttempts) if getTaskError != nil { log.Error("failed to get unassigned chunk proving tasks", "height", getTaskParameter.ProverHeight, "err", getTaskError) return nil, ErrCoordinatorInternalFailure @@ -106,7 +106,7 @@ func (cp *ChunkProverTask) Assign(ctx *gin.Context, getTaskParameter *coordinato return nil, nil } - rowsAffected, updateAttemptsErr := cp.chunkOrm.UpdateChunkAttempts(ctx, tmpChunkTask.Index, tmpChunkTask.ActiveAttempts, tmpChunkTask.TotalAttempts) + rowsAffected, updateAttemptsErr := cp.chunkOrm.UpdateChunkAttempts(ctx.Copy(), tmpChunkTask.Index, tmpChunkTask.ActiveAttempts, tmpChunkTask.TotalAttempts) if updateAttemptsErr != nil { log.Error("failed to update chunk attempts", "height", getTaskParameter.ProverHeight, "err", updateAttemptsErr) return nil, ErrCoordinatorInternalFailure @@ -140,13 +140,13 @@ func (cp *ChunkProverTask) Assign(ctx *gin.Context, getTaskParameter *coordinato AssignedAt: utils.NowUTC(), } - if err = cp.proverTaskOrm.InsertProverTask(ctx, &proverTask); err != nil { + if err = cp.proverTaskOrm.InsertProverTask(ctx.Copy(), &proverTask); err != nil { cp.recoverActiveAttempts(ctx, chunkTask) log.Error("insert chunk prover task fail", "taskID", chunkTask.Hash, "publicKey", taskCtx.PublicKey, "err", err) return nil, ErrCoordinatorInternalFailure } - taskMsg, err := cp.formatProverTask(ctx, &proverTask) + taskMsg, err := cp.formatProverTask(ctx.Copy(), &proverTask) if err != nil { cp.recoverActiveAttempts(ctx, chunkTask) log.Error("format prover task failure", "hash", chunkTask.Hash, "err", err) diff --git a/coordinator/internal/logic/provertask/prover_task.go b/coordinator/internal/logic/provertask/prover_task.go index 980dc569e..162b18614 100644 --- a/coordinator/internal/logic/provertask/prover_task.go +++ b/coordinator/internal/logic/provertask/prover_task.go @@ -100,7 +100,7 @@ func (b *BaseProverTask) checkParameter(ctx *gin.Context, getTaskParameter *coor return nil, fmt.Errorf("incompatible vk. please check your params files or config files") } - isBlocked, err := b.proverBlockListOrm.IsPublicKeyBlocked(ctx, publicKey.(string)) + isBlocked, err := b.proverBlockListOrm.IsPublicKeyBlocked(ctx.Copy(), publicKey.(string)) if err != nil { return nil, fmt.Errorf("failed to check whether the public key %s is blocked before assigning a chunk task, err: %w, proverName: %s, proverVersion: %s", publicKey, err, proverName, proverVersion) } @@ -108,7 +108,7 @@ func (b *BaseProverTask) checkParameter(ctx *gin.Context, getTaskParameter *coor return nil, fmt.Errorf("public key %s is blocked from fetching tasks. ProverName: %s, ProverVersion: %s", publicKey, proverName, proverVersion) } - isAssigned, err := b.proverTaskOrm.IsProverAssigned(ctx, publicKey.(string)) + isAssigned, err := b.proverTaskOrm.IsProverAssigned(ctx.Copy(), publicKey.(string)) if err != nil { return nil, fmt.Errorf("failed to check if prover %s is assigned a task, err: %w", publicKey.(string), err) } diff --git a/coordinator/internal/logic/submitproof/proof_receiver.go b/coordinator/internal/logic/submitproof/proof_receiver.go index fa01d4c12..129303d73 100644 --- a/coordinator/internal/logic/submitproof/proof_receiver.go +++ b/coordinator/internal/logic/submitproof/proof_receiver.go @@ -139,14 +139,14 @@ func (m *ProofReceiverLogic) HandleZkProof(ctx *gin.Context, proofMsg *message.P var proverTask *orm.ProverTask var err error if proofParameter.UUID != "" { - proverTask, err = m.proverTaskOrm.GetProverTaskByUUIDAndPublicKey(ctx, proofParameter.UUID, pk) + proverTask, err = m.proverTaskOrm.GetProverTaskByUUIDAndPublicKey(ctx.Copy(), proofParameter.UUID, pk) if proverTask == nil || err != nil { log.Error("get none prover task for the proof", "uuid", proofParameter.UUID, "key", pk, "taskID", proofMsg.ID, "error", err) return ErrValidatorFailureProverTaskEmpty } } else { // TODO When prover all have upgrade, need delete this logic - proverTask, err = m.proverTaskOrm.GetAssignedProverTaskByTaskIDAndProver(ctx, proofMsg.Type, proofMsg.ID, pk, pv) + proverTask, err = m.proverTaskOrm.GetAssignedProverTaskByTaskIDAndProver(ctx.Copy(), proofMsg.Type, proofMsg.ID, pk, pv) if proverTask == nil || err != nil { log.Error("get none prover task for the proof", "key", pk, "taskID", proofMsg.ID, "error", err) return ErrValidatorFailureProverTaskEmpty @@ -159,7 +159,7 @@ func (m *ProofReceiverLogic) HandleZkProof(ctx *gin.Context, proofMsg *message.P log.Info("handling zk proof", "proofID", proofMsg.ID, "proverName", proverTask.ProverName, "proverPublicKey", pk, "proveType", proverTask.TaskType, "proofTime", proofTimeSec, "hardForkName", hardForkName) - if err = m.validator(ctx, proverTask, pk, proofMsg, proofParameter, hardForkName); err != nil { + if err = m.validator(ctx.Copy(), proverTask, pk, proofMsg, proofParameter, hardForkName); err != nil { return err } @@ -175,7 +175,7 @@ func (m *ProofReceiverLogic) HandleZkProof(ctx *gin.Context, proofMsg *message.P if verifyErr != nil || !success { m.verifierFailureTotal.WithLabelValues(pv).Inc() - m.proofRecover(ctx, proverTask, types.ProverTaskFailureTypeVerifiedFailed, proofMsg) + m.proofRecover(ctx.Copy(), proverTask, types.ProverTaskFailureTypeVerifiedFailed, proofMsg) log.Info("proof verified by coordinator failed", "proof id", proofMsg.ID, "prover name", proverTask.ProverName, "prover pk", pk, "forkName", hardForkName, "prove type", proofMsg.Type, "proof time", proofTimeSec, "error", verifyErr) @@ -191,10 +191,10 @@ func (m *ProofReceiverLogic) HandleZkProof(ctx *gin.Context, proofMsg *message.P log.Info("proof verified and valid", "proof id", proofMsg.ID, "prover name", proverTask.ProverName, "prover pk", pk, "prove type", proofMsg.Type, "proof time", proofTimeSec, "forkName", hardForkName) - if err := m.closeProofTask(ctx, proverTask, proofMsg, proofTimeSec); err != nil { + if err := m.closeProofTask(ctx.Copy(), proverTask, proofMsg, proofTimeSec); err != nil { m.proofSubmitFailure.Inc() - m.proofRecover(ctx, proverTask, types.ProverTaskFailureTypeServerError, proofMsg) + m.proofRecover(ctx.Copy(), proverTask, types.ProverTaskFailureTypeServerError, proofMsg) return ErrCoordinatorInternalFailure }