Skip to content

Commit feeac8f

Browse files
committed
fix for edge cases
1 parent b109407 commit feeac8f

File tree

4 files changed

+15
-11
lines changed

4 files changed

+15
-11
lines changed

coordinator/internal/controller/proxy/client.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func (c *upClient) Login(ctx context.Context, genLogin func(string) (*types.Logi
7171
// Step 1: Get challenge
7272
url := fmt.Sprintf("%s/coordinator/v1/challenge", c.baseURL)
7373

74-
req, err := http.NewRequest("GET", url, nil)
74+
req, err := http.NewRequestWithContext(ctx, "GET", url, nil)
7575
if err != nil {
7676
return nil, fmt.Errorf("failed to create challenge request: %w", err)
7777
}
@@ -107,7 +107,7 @@ func (c *upClient) Login(ctx context.Context, genLogin func(string) (*types.Logi
107107
return nil, fmt.Errorf("failed to marshal login parameter: %w", err)
108108
}
109109

110-
req, err = http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
110+
req, err = http.NewRequestWithContext(ctx, "POST", url, bytes.NewBuffer(jsonData))
111111
if err != nil {
112112
return nil, fmt.Errorf("failed to create login request: %w", err)
113113
}

coordinator/internal/controller/proxy/get_task.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,9 @@ func (ptc *GetTaskController) GetTasks(ctx *gin.Context) {
145145

146146
session := ptc.proverMgr.Get(publicKey)
147147
if session == nil {
148-
nerr := fmt.Errorf("can not get session for prover %s", proverName)
149-
types.RenderFailure(ctx, types.InternalServerError, nerr)
148+
nerr := fmt.Errorf("Trigger re-login: can not get session for prover %s", proverName)
149+
// has to trigger a login in proving-sdk side with ErrJWTTokenExpired error
150+
types.RenderFailure(ctx, types.ErrJWTTokenExpired, nerr)
150151
return
151152
}
152153

coordinator/internal/controller/proxy/prover_session.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func (m *ProverManager) Get(userKey string) (ret *proverSession) {
4949
if err != nil {
5050
log.Error("Get persistent layer for prover tokens fail", "error", err)
5151
} else if ret != nil {
52-
log.Debug("restore record from persistent", "key", userKey, "token", ret.proverToken)
52+
log.Debug("restore record from persistent", "key", userKey)
5353
ret.persistent = m.persistent
5454
}
5555
}
@@ -161,8 +161,8 @@ func (c *proverSession) maintainLogin(ctx context.Context, cliMgr Client, up str
161161
return
162162
}
163163

164-
if resp.ErrCode == ctypes.ErrJWTTokenExpired {
165-
log.Info("up stream has expired, renew upstream connection", "up", up)
164+
if resp.ErrCode == ctypes.ErrJWTTokenExpired || resp.ErrCode == ctypes.ErrJWTCommonErr {
165+
log.Info("up stream has expired, renew upstream connection", "up", up, "errcode", resp.ErrCode)
166166
cli.Reset()
167167
cli = cliMgr.ClientAsProxy(ctx)
168168
if cli == nil {
@@ -231,9 +231,10 @@ func (c *proverSession) GetTask(ctx context.Context, param *types.GetTaskParamet
231231
if err != nil {
232232
return nil, err
233233
}
234-
if resp.ErrCode != ctypes.ErrJWTTokenExpired {
234+
if resp.ErrCode != ctypes.ErrJWTTokenExpired && resp.ErrCode != ctypes.ErrJWTCommonErr {
235235
return resp, nil
236236
}
237+
log.Debug("Get Task first-try failed for broken token", "up", up, "errcode", resp.ErrCode)
237238
}
238239

239240
// like SDK, we would try one more time if the upstream token is expired
@@ -264,9 +265,10 @@ func (c *proverSession) SubmitProof(ctx context.Context, param *types.SubmitProo
264265
if err != nil {
265266
return nil, err
266267
}
267-
if resp.ErrCode != ctypes.ErrJWTTokenExpired {
268+
if resp.ErrCode != ctypes.ErrJWTTokenExpired && resp.ErrCode != ctypes.ErrJWTCommonErr {
268269
return resp, nil
269270
}
271+
log.Debug("Get Task first-try failed for broken token", "up", up, "errcode", resp.ErrCode)
270272
}
271273

272274
// like SDK, we would try one more time if the upstream token is expired

coordinator/internal/controller/proxy/submit_proof.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,9 @@ func (spc *SubmitProofController) SubmitProof(ctx *gin.Context) {
5959

6060
session := spc.proverMgr.Get(publicKey)
6161
if session == nil {
62-
nerr := fmt.Errorf("can not get session for prover %s", proverName)
63-
types.RenderFailure(ctx, types.InternalServerError, nerr)
62+
nerr := fmt.Errorf("Trigger re-login: can not get session for prover %s", proverName)
63+
// has to trigger a login in proving-sdk side with ErrJWTTokenExpired error
64+
types.RenderFailure(ctx, types.ErrJWTTokenExpired, nerr)
6465
return
6566
}
6667

0 commit comments

Comments
 (0)