Skip to content

Commit

Permalink
Count connection acquisition failures
Browse files Browse the repository at this point in the history
  • Loading branch information
danieljharvey committed Nov 1, 2023
1 parent a0a3248 commit 916cd78
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 2 deletions.
14 changes: 12 additions & 2 deletions crates/query-engine/execution/src/execution.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,12 @@ pub async fn execute(
.acquire()
.instrument(info_span!("Acquire connection"))
.await;
let mut connection = acquisition_timer.complete_with(connection_result)?;
let mut connection = acquisition_timer
.complete_with(connection_result)
.map_err(|err| {
metrics.error_metrics.record_connection_acquisition_error();
err
})?;

let query_timer = metrics.time_query_execution();
let rows_result = execute_queries(&mut connection, database_info, query, plan.variables).await;
Expand Down Expand Up @@ -113,7 +118,12 @@ pub async fn explain(
.acquire()
.instrument(info_span!("Acquire connection"))
.await;
let mut connection = acquisition_timer.complete_with(connection_result)?;
let mut connection = acquisition_timer
.complete_with(connection_result)
.map_err(|err| {
metrics.error_metrics.record_connection_acquisition_error();
err
})?;

// run and fetch from the database
sqlx_query
Expand Down
12 changes: 12 additions & 0 deletions crates/query-engine/execution/src/metrics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,8 @@ pub struct ErrorMetrics {
connector_error_total: IntCounter,
/// the database emmited an error.
database_error_total: IntCounter,
/// we failed to acquire a database connection from the pool
connection_acquisition_error_total: IntCounter,
}

impl ErrorMetrics {
Expand Down Expand Up @@ -338,12 +340,19 @@ impl ErrorMetrics {
"Total number of requests failed due to a database error.",
)?;

let connection_acquisition_error_total = add_int_counter_metric(
metrics_registry,
"ndc_postgres_error_connection_acquisition_error_total_count",
"Total number of failures to acquire a database connection.",
)?;

Ok(ErrorMetrics {
invalid_request_total,
unsupported_capability_total,
unsupported_feature_total,
connector_error_total,
database_error_total,
connection_acquisition_error_total,
})
}

Expand All @@ -362,4 +371,7 @@ impl ErrorMetrics {
pub fn record_database_error(&self) {
self.database_error_total.inc();
}
pub fn record_connection_acquisition_error(&self) {
self.connection_acquisition_error_total.inc()
}
}

0 comments on commit 916cd78

Please sign in to comment.