@@ -132,53 +132,9 @@ func (s *Server) Process(srv extProcPb.ExternalProcessor_ProcessServer) error {
132
132
133
133
if err != nil {
134
134
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
182
138
}
183
139
}
184
140
@@ -190,6 +146,60 @@ func (s *Server) Process(srv extProcPb.ExternalProcessor_ProcessServer) error {
190
146
}
191
147
}
192
148
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
+
193
203
// RequestContext stores context information during the life time of an HTTP request.
194
204
type RequestContext struct {
195
205
TargetPod string
0 commit comments