From 74ac88e774701567fb5e0645161dcba7f8741539 Mon Sep 17 00:00:00 2001 From: Paul Masurel Date: Mon, 17 Jun 2024 13:49:02 +0900 Subject: [PATCH] Logging internal server error causes. (#5132) --- .../src/elasticsearch_api/model/error.rs | 6 ++++++ quickwit/quickwit-serve/src/rest_api_response.rs | 16 +++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/quickwit/quickwit-serve/src/elasticsearch_api/model/error.rs b/quickwit/quickwit-serve/src/elasticsearch_api/model/error.rs index b6ebcb1c353..53704afc3f6 100644 --- a/quickwit/quickwit-serve/src/elasticsearch_api/model/error.rs +++ b/quickwit/quickwit-serve/src/elasticsearch_api/model/error.rs @@ -19,6 +19,7 @@ use elasticsearch_dsl::search::ErrorCause; use hyper::StatusCode; +use quickwit_common::{rate_limited_debug, rate_limited_error}; use quickwit_index_management::IndexServiceError; use quickwit_ingest::IngestServiceError; use quickwit_proto::ingest::IngestV2Error; @@ -39,6 +40,11 @@ impl ElasticsearchError { reason: String, exception_opt: Option, ) -> Self { + if status.is_server_error() { + rate_limited_error!(limit_per_min=10, status=%status, "http request failed with internal server error: {}", reason); + } else if !status.is_success() { + rate_limited_debug!(limit_per_min=10, status=%status, "http request failed: {}", reason); + } ElasticsearchError { status, error: ErrorCause { diff --git a/quickwit/quickwit-serve/src/rest_api_response.rs b/quickwit/quickwit-serve/src/rest_api_response.rs index c8c64dbb1d2..fb39a80bf03 100644 --- a/quickwit/quickwit-serve/src/rest_api_response.rs +++ b/quickwit/quickwit-serve/src/rest_api_response.rs @@ -84,11 +84,17 @@ impl Reply for RestApiResponse { *response.status_mut() = self.status_code; response } - Err(()) => warp::reply::json(&RestApiError { - status_code: StatusCode::INTERNAL_SERVER_ERROR, - message: JSON_SERIALIZATION_ERROR.to_string(), - }) - .into_response(), + Err(()) => { + quickwit_common::rate_limited_error!( + limit_per_min = 10, + "REST body json serialization error." + ); + warp::reply::json(&RestApiError { + status_code: StatusCode::INTERNAL_SERVER_ERROR, + message: JSON_SERIALIZATION_ERROR.to_string(), + }) + .into_response() + } } } }