@@ -14,24 +14,26 @@ import (
1414
1515// SubmitProofController the submit proof api controller
1616type SubmitProofController struct {
17- proverMgr * ProverManager
18- clients Clients
17+ proverMgr * ProverManager
18+ clients Clients
19+ priorityUpstream * PriorityUpstreamManager
1920}
2021
2122// NewSubmitProofController create the submit proof api controller instance
22- func NewSubmitProofController (cfg * config.ProxyConfig , clients Clients , proverMgr * ProverManager , reg prometheus.Registerer ) * SubmitProofController {
23+ func NewSubmitProofController (cfg * config.ProxyConfig , clients Clients , proverMgr * ProverManager , priorityMgr * PriorityUpstreamManager , reg prometheus.Registerer ) * SubmitProofController {
2324 return & SubmitProofController {
24- proverMgr : proverMgr ,
25- clients : clients ,
25+ proverMgr : proverMgr ,
26+ clients : clients ,
27+ priorityUpstream : priorityMgr ,
2628 }
2729}
2830
29- func upstreamFromTaskName (taskID string ) string {
30- parts , _ , found := strings .Cut (taskID , ":" )
31+ func upstreamFromTaskName (taskID string ) ( string , string ) {
32+ parts , rest , found := strings .Cut (taskID , ":" )
3133 if found {
32- return parts
34+ return parts , rest
3335 }
34- return ""
36+ return "" , parts
3537}
3638
3739func formUpstreamWithTaskName (upstream string , taskID string ) string {
@@ -40,6 +42,7 @@ func formUpstreamWithTaskName(upstream string, taskID string) string {
4042
4143// SubmitProof prover submit the proof to coordinator
4244func (spc * SubmitProofController ) SubmitProof (ctx * gin.Context ) {
45+
4346 var submitParameter coordinatorType.SubmitProofParameter
4447 if err := ctx .ShouldBind (& submitParameter ); err != nil {
4548 nerr := fmt .Errorf ("prover submitProof parameter invalid, err:%w" , err )
@@ -53,14 +56,15 @@ func (spc *SubmitProofController) SubmitProof(ctx *gin.Context) {
5356 }
5457
5558 session := spc .proverMgr .Get (publicKey )
56- upstream := upstreamFromTaskName (submitParameter .TaskID )
59+ upstream , realTaskID := upstreamFromTaskName (submitParameter .TaskID )
5760 cli , existed := spc .clients [upstream ]
5861 if ! existed {
5962 // TODO: log error
6063 nerr := fmt .Errorf ("Invalid upstream name (%s) from taskID %s" , upstream , submitParameter .TaskID )
6164 types .RenderFailure (ctx , types .ErrCoordinatorParameterInvalidNo , nerr )
6265 return
6366 }
67+ submitParameter .TaskID = realTaskID
6468
6569 resp , err := session .SubmitProof (ctx , & submitParameter , cli , upstream )
6670 if err != nil {
@@ -71,6 +75,7 @@ func (spc *SubmitProofController) SubmitProof(ctx *gin.Context) {
7175 types .RenderFailure (ctx , resp .ErrCode , fmt .Errorf ("%s" , resp .ErrMsg ))
7276 return
7377 } else {
78+ spc .priorityUpstream .Delete (upstream )
7479 types .RenderSuccess (ctx , resp .Data )
7580 return
7681 }
0 commit comments