added more metrics to statement_cache
This commit is contained in:
@@ -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;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user