@@ -132,53 +132,9 @@ func (s *Server) Process(srv extProcPb.ExternalProcessor_ProcessServer) error {
132132
133133 if err != nil {
134134 logger .V (logutil .DEFAULT ).Error (err , "Failed to process request" , "request" , req )
135- switch errutil .CanonicalCode (err ) {
136- // This code can be returned by scheduler when there is no capacity for sheddable
137- // requests.
138- case errutil .InferencePoolResourceExhausted :
139- resp = & extProcPb.ProcessingResponse {
140- Response : & extProcPb.ProcessingResponse_ImmediateResponse {
141- ImmediateResponse : & extProcPb.ImmediateResponse {
142- Status : & envoyTypePb.HttpStatus {
143- Code : envoyTypePb .StatusCode_TooManyRequests ,
144- },
145- },
146- },
147- }
148- // This code can be returned by when EPP processes the request and run into server-side errors.
149- case errutil .Internal :
150- resp = & extProcPb.ProcessingResponse {
151- Response : & extProcPb.ProcessingResponse_ImmediateResponse {
152- ImmediateResponse : & extProcPb.ImmediateResponse {
153- Status : & envoyTypePb.HttpStatus {
154- Code : envoyTypePb .StatusCode_InternalServerError ,
155- },
156- },
157- },
158- }
159- // This code can be returned when users provide invalid json request.
160- case errutil .BadRequest :
161- resp = & extProcPb.ProcessingResponse {
162- Response : & extProcPb.ProcessingResponse_ImmediateResponse {
163- ImmediateResponse : & extProcPb.ImmediateResponse {
164- Status : & envoyTypePb.HttpStatus {
165- Code : envoyTypePb .StatusCode_BadRequest ,
166- },
167- },
168- },
169- }
170- case errutil .BadConfiguration :
171- resp = & extProcPb.ProcessingResponse {
172- Response : & extProcPb.ProcessingResponse_ImmediateResponse {
173- ImmediateResponse : & extProcPb.ImmediateResponse {
174- Status : & envoyTypePb.HttpStatus {
175- Code : envoyTypePb .StatusCode_NotFound ,
176- },
177- },
178- },
179- }
180- default :
181- return status .Errorf (status .Code (err ), "failed to handle request: %v" , err )
135+ resp , err = BuildErrResponse (err )
136+ if err != nil {
137+ return err
182138 }
183139 }
184140
@@ -190,6 +146,60 @@ func (s *Server) Process(srv extProcPb.ExternalProcessor_ProcessServer) error {
190146 }
191147}
192148
149+ func BuildErrResponse (err error ) (* extProcPb.ProcessingResponse , error ) {
150+ var resp * extProcPb.ProcessingResponse
151+
152+ switch errutil .CanonicalCode (err ) {
153+ // This code can be returned by scheduler when there is no capacity for sheddable
154+ // requests.
155+ case errutil .InferencePoolResourceExhausted :
156+ resp = & extProcPb.ProcessingResponse {
157+ Response : & extProcPb.ProcessingResponse_ImmediateResponse {
158+ ImmediateResponse : & extProcPb.ImmediateResponse {
159+ Status : & envoyTypePb.HttpStatus {
160+ Code : envoyTypePb .StatusCode_TooManyRequests ,
161+ },
162+ },
163+ },
164+ }
165+ // This code can be returned by when EPP processes the request and run into server-side errors.
166+ case errutil .Internal :
167+ resp = & extProcPb.ProcessingResponse {
168+ Response : & extProcPb.ProcessingResponse_ImmediateResponse {
169+ ImmediateResponse : & extProcPb.ImmediateResponse {
170+ Status : & envoyTypePb.HttpStatus {
171+ Code : envoyTypePb .StatusCode_InternalServerError ,
172+ },
173+ },
174+ },
175+ }
176+ // This code can be returned when users provide invalid json request.
177+ case errutil .BadRequest :
178+ resp = & extProcPb.ProcessingResponse {
179+ Response : & extProcPb.ProcessingResponse_ImmediateResponse {
180+ ImmediateResponse : & extProcPb.ImmediateResponse {
181+ Status : & envoyTypePb.HttpStatus {
182+ Code : envoyTypePb .StatusCode_BadRequest ,
183+ },
184+ },
185+ },
186+ }
187+ case errutil .BadConfiguration :
188+ resp = & extProcPb.ProcessingResponse {
189+ Response : & extProcPb.ProcessingResponse_ImmediateResponse {
190+ ImmediateResponse : & extProcPb.ImmediateResponse {
191+ Status : & envoyTypePb.HttpStatus {
192+ Code : envoyTypePb .StatusCode_NotFound ,
193+ },
194+ },
195+ },
196+ }
197+ default :
198+ return nil , status .Errorf (status .Code (err ), "failed to handle request: %v" , err )
199+ }
200+ return resp , nil
201+ }
202+
193203// RequestContext stores context information during the life time of an HTTP request.
194204type RequestContext struct {
195205 TargetPod string
0 commit comments