diff --git a/api/server.go b/api/server.go index b4b8d97d5..752b8ce06 100644 --- a/api/server.go +++ b/api/server.go @@ -435,7 +435,10 @@ type responseHandler struct { metrics metrics.Collector } -const errCodePanic = -32603 +const ( + errCodePanic = -32603 + errCodeTimeout = -32002 +) type jsonError struct { Code int `json:"code"` @@ -470,6 +473,11 @@ func (w *responseHandler) Write(data []byte) (int, error) { w.metrics.ServerPanicked(message.Error.Message) } + // handle possible request timeouts + if message.Error != nil && message.Error.Code == errCodeTimeout { + w.metrics.ApiErrorOccurred() + } + // It's an error response and requires special treatment. if message.Error != nil { // The logic below is taken from: