Compare commits

..

5 Commits

Author SHA1 Message Date
georgehao
2764018553 feat: update 2023-08-18 16:46:24 +08:00
georgehao
4180105c45 feat: lint 2023-08-18 16:28:14 +08:00
georgehao
0292a772fd chore: auto version bump [bot] 2023-08-18 08:24:13 +00:00
georgehao
d2d75d8ee9 Merge branch 'develop' into fix/prover_bug 2023-08-18 16:23:55 +08:00
georgehao
fca6fc1579 feat: fix bug 2023-08-18 16:21:39 +08:00
3 changed files with 25 additions and 22 deletions

View File

@@ -165,7 +165,7 @@ func (c *CoordinatorClient) GetTask(ctx context.Context, req *GetTaskRequest) (*
}
// SubmitProof sends a request to the coordinator to submit proof.
func (c *CoordinatorClient) SubmitProof(ctx context.Context, req *SubmitProofRequest) (needDelete bool, err error) {
func (c *CoordinatorClient) SubmitProof(ctx context.Context, req *SubmitProofRequest) error {
var result SubmitProofResponse
resp, err := c.client.R().
@@ -175,24 +175,27 @@ func (c *CoordinatorClient) SubmitProof(ctx context.Context, req *SubmitProofReq
Post("/coordinator/v1/submit_proof")
if err != nil {
return false, fmt.Errorf("submit proof request failed: %v", err)
log.Error("submit proof request failed: %v", err)
return fmt.Errorf("submit proof request failed: %w", ConnectErr)
}
if resp.StatusCode() != 200 {
return false, fmt.Errorf("failed to submit proof, status code: %v", resp.StatusCode())
log.Error("failed to submit proof, status code: %v", resp.StatusCode())
return fmt.Errorf("failed to submit proof, status code not 200: %w", ConnectErr)
}
if result.ErrCode == types.ErrJWTTokenExpired {
log.Info("JWT expired, attempting to re-login")
if err := c.Login(ctx); err != nil {
return false, fmt.Errorf("JWT expired, re-login failed: %v", err)
log.Error("JWT expired, re-login failed: %v", err)
return fmt.Errorf("JWT expired, re-login failed: %w", ConnectErr)
}
log.Info("re-login success")
return c.SubmitProof(ctx, req)
}
if result.ErrCode != types.Success {
return true, fmt.Errorf("error code: %v, error message: %v", result.ErrCode, result.ErrMsg)
return fmt.Errorf("error code: %v, error message: %v", result.ErrCode, result.ErrMsg)
}
return true, nil
return nil
}

View File

@@ -1,9 +1,13 @@
package client
import (
"errors"
"scroll-tech/common/types/message"
)
var ConnectErr = errors.New("connect coordinator error")
// ChallengeResponse defines the response structure for random API
type ChallengeResponse struct {
ErrCode int `json:"errcode"`

View File

@@ -162,7 +162,7 @@ func (r *Prover) proveAndSubmit() error {
proofMsg, err = r.prove(task)
if err != nil { // handling error from prove
log.Error("failed to prove task", "task_type", task.Task.Type, "task-id", task.Task.ID, "err", err)
return r.submitErr(task, message.ProofFailureNoPanic, err)
return r.submitErr(task, true, message.ProofFailureNoPanic, err)
}
return r.submitProof(proofMsg)
}
@@ -321,14 +321,12 @@ func (r *Prover) submitProof(msg *message.ProofDetail) error {
}
// send the submit request
needDeleteTask, err := r.coordinatorClient.SubmitProof(r.ctx, req)
if needDeleteTask {
if deleteErr := r.stack.Delete(msg.ID); deleteErr != nil {
log.Error("prover stack pop failed", "task_type", msg.Type, "task_id", msg.ID, "err", deleteErr)
if err := r.coordinatorClient.SubmitProof(r.ctx, req); err != nil {
if !errors.Is(errors.Unwrap(err), client.ConnectErr) {
if deleteErr := r.stack.Delete(msg.ID); deleteErr != nil {
log.Error("prover stack pop failed", "task_type", msg.Type, "task_id", msg.ID, "err", deleteErr)
}
}
}
if err != nil {
return fmt.Errorf("error submitting proof: %v", err)
}
@@ -337,7 +335,7 @@ func (r *Prover) submitProof(msg *message.ProofDetail) error {
return nil
}
func (r *Prover) submitErr(task *store.ProvingTask, proofFailureType message.ProofFailureType, err error) error {
func (r *Prover) submitErr(task *store.ProvingTask, isRetry bool, proofFailureType message.ProofFailureType, err error) error {
// prepare the submit request
req := &client.SubmitProofRequest{
TaskID: task.Task.ID,
@@ -349,14 +347,12 @@ func (r *Prover) submitErr(task *store.ProvingTask, proofFailureType message.Pro
}
// send the submit request
needDeleteTask, submitErr := r.coordinatorClient.SubmitProof(r.ctx, req)
if needDeleteTask {
if deleteErr := r.stack.Delete(task.Task.ID); deleteErr != nil {
log.Error("prover stack pop failed", "task_type", task.Task.Type, "task_id", task.Task.ID, "err", deleteErr)
if submitErr := r.coordinatorClient.SubmitProof(r.ctx, req); submitErr != nil {
if !errors.Is(errors.Unwrap(err), client.ConnectErr) {
if deleteErr := r.stack.Delete(task.Task.ID); deleteErr != nil {
log.Error("prover stack pop failed", "task_type", task.Task.Type, "task_id", task.Task.ID, "err", deleteErr)
}
}
}
if submitErr != nil {
return fmt.Errorf("error submitting proof: %v", submitErr)
}