diff --git a/query-engine/driver-adapters/src/proxy.rs b/query-engine/driver-adapters/src/proxy.rs index da03336bdf53..62086a245199 100644 --- a/query-engine/driver-adapters/src/proxy.rs +++ b/query-engine/driver-adapters/src/proxy.rs @@ -4,6 +4,7 @@ use std::str::FromStr; use crate::async_js_function::AsyncJsFunction; use crate::conversion::JSArg; use crate::transaction::JsTransaction; +use metrics::increment_gauge; use napi::bindgen_prelude::{FromNapiValue, ToNapiValue}; use napi::threadsafe_function::{ErrorStrategy, ThreadsafeFunction}; use napi::{JsObject, JsString}; @@ -555,6 +556,12 @@ impl DriverProxy { pub async fn start_transaction(&self) -> quaint::Result> { let tx = self.start_transaction.call(()).await?; + + // Decrement for this gauge is done in JsTransaction::commit/JsTransaction::rollback + // Previously, it was done in JsTransaction::new, similar to the native Transaction. + // However, correct Dispatcher is lost there and increment does not register, so we moved + // it here instead. + increment_gauge!("prisma_client_queries_active", 1.0); Ok(Box::new(tx)) } } diff --git a/query-engine/driver-adapters/src/transaction.rs b/query-engine/driver-adapters/src/transaction.rs index 0d26c7f863aa..d35a9019c6bc 100644 --- a/query-engine/driver-adapters/src/transaction.rs +++ b/query-engine/driver-adapters/src/transaction.rs @@ -1,5 +1,5 @@ use async_trait::async_trait; -use metrics::{decrement_gauge, increment_gauge}; +use metrics::decrement_gauge; use napi::{bindgen_prelude::FromNapiValue, JsObject}; use quaint::{ connector::{IsolationLevel, Transaction as QuaintTransaction}, @@ -22,8 +22,6 @@ pub(crate) struct JsTransaction { impl JsTransaction { pub(crate) fn new(inner: JsBaseQueryable, tx_proxy: TransactionProxy) -> Self { - increment_gauge!("prisma_client_queries_active", 1.0); - Self { inner, tx_proxy } } @@ -40,6 +38,7 @@ impl JsTransaction { #[async_trait] impl QuaintTransaction for JsTransaction { async fn commit(&self) -> quaint::Result<()> { + // increment of this gauge is done in DriverProxy::startTransaction decrement_gauge!("prisma_client_queries_active", 1.0); let commit_stmt = "COMMIT"; @@ -55,6 +54,7 @@ impl QuaintTransaction for JsTransaction { } async fn rollback(&self) -> quaint::Result<()> { + // increment of this gauge is done in DriverProxy::startTransaction decrement_gauge!("prisma_client_queries_active", 1.0); let rollback_stmt = "ROLLBACK";