added more metrics to statement_cache

This commit is contained in:
2025-08-11 20:51:13 +02:00
parent 01d7179604
commit 6ac3f80887
3 changed files with 35 additions and 52 deletions
+7 -5
View File
@@ -34,18 +34,21 @@ public:
execution_metrics metrics{std::chrono::steady_clock::now()};
auto result = try_with_retry([this, &bindings, &metrics]() -> utils::result<size_t, utils::error> {
const auto query = sql();
if (!try_lock()) {
++metrics.lock_attempts;
bus_.publish<statement_lock_failed_event>({sql(), std::chrono::steady_clock::now(), metrics.lock_attempt_start});
const auto now = std::chrono::steady_clock::now();
bus_.publish(statement_lock_failed_event{query, now, now - metrics.lock_attempt_start});
return utils::failure(utils::error{
error_code::STATEMENT_LOCKED,
"Failed to execute statement because it is already in use"
});
}
metrics.lock_acquired = std::chrono::steady_clock::now();
bus_.publish<statement_lock_acquired_event>({sql(), std::chrono::steady_clock::now(), metrics.lock_attempt_start, metrics.lock_acquired});
const auto now = std::chrono::steady_clock::now();
bus_.publish(statement_lock_acquired_event{query, now, now - metrics.lock_attempt_start});
auto guard = statement_guard(*this);
metrics.execution_start = std::chrono::steady_clock::now();
if (const auto conn = pool_.acquire(connection_id_); !conn.valid()) {
return utils::failure(utils::error{
error_code::EXECUTE_FAILED,
@@ -53,11 +56,10 @@ public:
});
}
metrics.execution_start = std::chrono::steady_clock::now();
auto execution_result = statement_->execute(bindings);
metrics.execution_end = std::chrono::steady_clock::now();
bus_.publish<statement_execution_event>({sql(), std::chrono::steady_clock::now(), metrics.execution_start, metrics.execution_end});
bus_.publish(statement_execution_event{query, metrics.execution_end, metrics.execution_end - metrics.execution_start});
return execution_result;
});