fix(coordinator): stop masking 501 as an internal error
Unimplemented endpoints answered {"error":"internal error"} because the
detail-hiding branch covered everything >= 500, and 501 falls in that range.
That is actively misleading: it sent one debugging session looking for a
database fault when the endpoint simply had no implementation yet.
501 now says "not implemented". It leaks nothing — the client already knows the
status code — while genuine 5xx responses keep hiding their details behind a
request id.
This commit is contained in:
@@ -44,6 +44,14 @@ func (s *Server) writeError(w http.ResponseWriter, r *http.Request, err error) {
|
|||||||
status = http.StatusNotImplemented
|
status = http.StatusNotImplemented
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 501 says "this endpoint has no implementation yet" — that leaks nothing and
|
||||||
|
// is far more useful than a generic failure, which sent one debugging session
|
||||||
|
// hunting a database problem that did not exist.
|
||||||
|
if status == http.StatusNotImplemented {
|
||||||
|
writeJSON(w, status, errorResponse{Error: "not implemented", RequestID: reqID})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if status >= 500 {
|
if status >= 500 {
|
||||||
// Never echo an internal error: it can carry table names, query
|
// Never echo an internal error: it can carry table names, query
|
||||||
// fragments, and values. The request ID is the bridge to the logs.
|
// fragments, and values. The request ID is the bridge to the logs.
|
||||||
|
|||||||
Reference in New Issue
Block a user