From 1b22317e5946b8398c7951a5559a03d106a1fba7 Mon Sep 17 00:00:00 2001 From: Li Yazhou Date: Mon, 13 Jan 2025 18:38:30 +0800 Subject: [PATCH 1/6] add progress hook --- src/common/base/src/base/progress.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/common/base/src/base/progress.rs b/src/common/base/src/base/progress.rs index 0b444164fe690..d03d903d16637 100644 --- a/src/common/base/src/base/progress.rs +++ b/src/common/base/src/base/progress.rs @@ -24,10 +24,17 @@ pub struct ProgressValues { pub bytes: usize, } +/// [`ProgressHook`] can be used to hook the progress to update the global metrics +/// whenever the progress is updated. +pub trait ProgressHook: std::fmt::Debug + Send + Sync { + fn incr(&self, progress_values: &ProgressValues); +} + #[derive(Debug)] pub struct Progress { rows: AtomicUsize, bytes: AtomicUsize, + hook: Option>, } impl Progress { @@ -35,6 +42,15 @@ impl Progress { Self { rows: AtomicUsize::new(0), bytes: AtomicUsize::new(0), + hook: None, + } + } + + pub fn with_hook(self, hook: Box) -> Self { + Self { + rows: self.rows, + bytes: self.bytes, + hook: Some(hook), } } @@ -42,6 +58,9 @@ impl Progress { self.rows.fetch_add(progress_values.rows, Ordering::Relaxed); self.bytes .fetch_add(progress_values.bytes, Ordering::Relaxed); + if let Some(hook) = &self.hook { + hook.incr(progress_values); + } } pub fn set(&self, progress_values: &ProgressValues) { From 3cb9d9427a460e9a900ac0f255830581e983d1a0 Mon Sep 17 00:00:00 2001 From: Li Yazhou Date: Mon, 13 Jan 2025 18:49:13 +0800 Subject: [PATCH 2/6] add progress metric hook --- src/common/base/src/base/progress.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/common/base/src/base/progress.rs b/src/common/base/src/base/progress.rs index d03d903d16637..c8cac716deee9 100644 --- a/src/common/base/src/base/progress.rs +++ b/src/common/base/src/base/progress.rs @@ -14,10 +14,13 @@ use std::sync::atomic::AtomicUsize; use std::sync::atomic::Ordering; +use std::sync::Arc; use serde::Deserialize; use serde::Serialize; +use crate::runtime::metrics::Counter; + #[derive(Debug, Clone, Deserialize, Serialize, Default)] pub struct ProgressValues { pub rows: usize, @@ -30,6 +33,28 @@ pub trait ProgressHook: std::fmt::Debug + Send + Sync { fn incr(&self, progress_values: &ProgressValues); } +#[derive(Debug)] +pub struct MetricProgressHook { + pub rows_metrics: Arc, + pub bytes_metrics: Arc, +} + +impl MetricProgressHook { + pub fn new(rows_metrics: Arc, bytes_metrics: Arc) -> Self { + Self { + rows_metrics, + bytes_metrics, + } + } +} + +impl ProgressHook for MetricProgressHook { + fn incr(&self, progress_values: &ProgressValues) { + self.rows_metrics.inc_by(progress_values.rows as u64); + self.bytes_metrics.inc_by(progress_values.bytes as u64); + } +} + #[derive(Debug)] pub struct Progress { rows: AtomicUsize, From ff18cbda7682354c3f8b8e249e0e68237c282cb4 Mon Sep 17 00:00:00 2001 From: Li Yazhou Date: Mon, 13 Jan 2025 19:00:12 +0800 Subject: [PATCH 3/6] add progress hook --- src/common/metrics/src/metrics/interpreter.rs | 13 ++++++ .../service/src/sessions/query_ctx_shared.rs | 41 ++++++++++++++++++- 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/src/common/metrics/src/metrics/interpreter.rs b/src/common/metrics/src/metrics/interpreter.rs index e9c1c2e303205..4db4ea8268758 100644 --- a/src/common/metrics/src/metrics/interpreter.rs +++ b/src/common/metrics/src/metrics/interpreter.rs @@ -38,6 +38,10 @@ const METRIC_QUERY_SCAN_PARTITIONS: &str = "query_scan_partitions"; const METRIC_QUERY_TOTAL_PARTITIONS: &str = "query_total_partitions"; const METRIC_QUERY_RESULT_ROWS: &str = "query_result_rows"; const METRIC_QUERY_RESULT_BYTES: &str = "query_result_bytes"; +const METRIC_QUERY_PROGRESS_SCAN_ROWS: &str = "query_progress_scan_rows"; +const METRIC_QUERY_PROGRESS_SCAN_BYTES: &str = "query_progress_scan_bytes"; +const METRIC_QUERY_PROGRSS_WRITE_ROWS: &str = "query_progress_write_rows"; +const METRIC_QUERY_PROGRSS_WRITE_BYTES: &str = "query_progress_write_bytes"; pub static QUERY_START: LazyLock> = LazyLock::new(|| register_counter_family(METRIC_QUERY_START)); @@ -73,3 +77,12 @@ pub static QUERY_RESULT_ROWS: LazyLock> = LazyLock::new(|| register_counter_family(METRIC_QUERY_RESULT_ROWS)); pub static QUERY_RESULT_BYTES: LazyLock> = LazyLock::new(|| register_counter_family(METRIC_QUERY_RESULT_BYTES)); + +pub static QUERY_PROGRESS_SCAN_ROWS: LazyLock> = + LazyLock::new(|| register_counter_family(METRIC_QUERY_PROGRESS_SCAN_ROWS)); +pub static QUERY_PROGRESS_SCAN_BYTES: LazyLock> = + LazyLock::new(|| register_counter_family(METRIC_QUERY_PROGRESS_SCAN_BYTES)); +pub static QUERY_PROGRSS_WRITE_ROWS: LazyLock> = + LazyLock::new(|| register_counter_family(METRIC_QUERY_PROGRSS_WRITE_ROWS)); +pub static QUERY_PROGRSS_WRITE_BYTES: LazyLock> = + LazyLock::new(|| register_counter_family(METRIC_QUERY_PROGRSS_WRITE_BYTES)); diff --git a/src/query/service/src/sessions/query_ctx_shared.rs b/src/query/service/src/sessions/query_ctx_shared.rs index c31fe083316b2..20c1ec6b1efd8 100644 --- a/src/query/service/src/sessions/query_ctx_shared.rs +++ b/src/query/service/src/sessions/query_ctx_shared.rs @@ -26,6 +26,7 @@ use databend_common_base::base::short_sql; use databend_common_base::base::Progress; use databend_common_base::base::SpillProgress; use databend_common_base::runtime::drop_guard; +use databend_common_base::runtime::metrics::Counter; use databend_common_base::runtime::Runtime; use databend_common_catalog::catalog::Catalog; use databend_common_catalog::catalog::CatalogManager; @@ -54,6 +55,7 @@ use databend_common_storage::MutationStatus; use databend_common_storage::StorageMetrics; use databend_common_storages_stream::stream_table::StreamTable; use databend_common_users::UserApiProvider; +use opentelemetry_sdk::metrics::data::Metric; use parking_lot::Mutex; use parking_lot::RwLock; use uuid::Uuid; @@ -154,6 +156,8 @@ impl QueryContextShared { session: Arc, cluster_cache: Arc, ) -> Result> { + let progress_metrics = + ProgressMetrics::new(session.get_current_tenant(), cluster_cache.name()); Ok(Arc::new(QueryContextShared { query_settings: Settings::create(session.get_current_tenant()), catalog_manager: CatalogManager::instance(), @@ -162,9 +166,15 @@ impl QueryContextShared { data_operator: DataOperator::instance(), init_query_id: Arc::new(RwLock::new(Uuid::new_v4().to_string())), total_scan_values: Arc::new(Progress::create()), - scan_progress: Arc::new(Progress::create()), + scan_progress: Arc::new(Progress::create().with_hook(MetricProgressHook::new( + progress_metrics.scan_rows.clone(), + progress_metrics.scan_bytes.clone(), + ))), result_progress: Arc::new(Progress::create()), - write_progress: Arc::new(Progress::create()), + write_progress: Arc::new(Progress::create().with_hook(MetricProgressHook::new( + progress_metrics.write_rows.clone(), + progress_metrics.write_bytes.clone(), + ))), error: Arc::new(Mutex::new(None)), warnings: Arc::new(Mutex::new(vec![])), runtime: Arc::new(RwLock::new(None)), @@ -661,3 +671,30 @@ impl Drop for QueryContextShared { }) } } + +struct ProgressMetrics { + scan_rows: Arc, + scan_bytes: Arc, + write_rows: Arc, + write_bytes: Arc, +} + +impl ProgressMetrics { + fn new(tenant: &str, cluster: &str) -> Self { + let common_labels = vec![ + ("tenant", tenant.to_string()), + ("cluster", cluster.to_string()), + ]; + + Self { + scan_rows: crate::metrics::interpreter::QUERY_PROGRESS_SCAN_ROWS + .get_or_create(&common_labels), + scan_bytes: crate::metrics::interpreter::QUERY_PROGRESS_SCAN_BYTES + .get_or_create(&common_labels), + write_rows: crate::metrics::interpreter::QUERY_PROGRESS_WRITE_ROWS + .get_or_create(&common_labels), + write_bytes: crate::metrics::interpreter::QUERY_PROGRESS_WRITE_BYTES + .get_or_create(&common_labels), + } + } +} From cb2f8df6e08186200aec12e12eaad02aa0dbea1c Mon Sep 17 00:00:00 2001 From: Li Yazhou Date: Mon, 13 Jan 2025 19:48:25 +0800 Subject: [PATCH 4/6] fix build --- src/common/base/src/base/mod.rs | 1 + src/common/base/src/base/progress.rs | 24 ------ src/common/metrics/src/metrics/interpreter.rs | 4 +- .../service/src/sessions/query_ctx_shared.rs | 78 ++++++++++++++----- 4 files changed, 60 insertions(+), 47 deletions(-) diff --git a/src/common/base/src/base/mod.rs b/src/common/base/src/base/mod.rs index ad268f081a8f4..61f88e83d1799 100644 --- a/src/common/base/src/base/mod.rs +++ b/src/common/base/src/base/mod.rs @@ -40,6 +40,7 @@ pub use net::get_free_udp_port; pub use ordered_float::OrderedFloat; pub use profiling::Profiling; pub use progress::Progress; +pub use progress::ProgressHook; pub use progress::ProgressValues; pub use progress::SpillProgress; pub use select::select3; diff --git a/src/common/base/src/base/progress.rs b/src/common/base/src/base/progress.rs index c8cac716deee9..505dd1b0063ee 100644 --- a/src/common/base/src/base/progress.rs +++ b/src/common/base/src/base/progress.rs @@ -19,8 +19,6 @@ use std::sync::Arc; use serde::Deserialize; use serde::Serialize; -use crate::runtime::metrics::Counter; - #[derive(Debug, Clone, Deserialize, Serialize, Default)] pub struct ProgressValues { pub rows: usize, @@ -33,28 +31,6 @@ pub trait ProgressHook: std::fmt::Debug + Send + Sync { fn incr(&self, progress_values: &ProgressValues); } -#[derive(Debug)] -pub struct MetricProgressHook { - pub rows_metrics: Arc, - pub bytes_metrics: Arc, -} - -impl MetricProgressHook { - pub fn new(rows_metrics: Arc, bytes_metrics: Arc) -> Self { - Self { - rows_metrics, - bytes_metrics, - } - } -} - -impl ProgressHook for MetricProgressHook { - fn incr(&self, progress_values: &ProgressValues) { - self.rows_metrics.inc_by(progress_values.rows as u64); - self.bytes_metrics.inc_by(progress_values.bytes as u64); - } -} - #[derive(Debug)] pub struct Progress { rows: AtomicUsize, diff --git a/src/common/metrics/src/metrics/interpreter.rs b/src/common/metrics/src/metrics/interpreter.rs index 4db4ea8268758..aee56d29c37e5 100644 --- a/src/common/metrics/src/metrics/interpreter.rs +++ b/src/common/metrics/src/metrics/interpreter.rs @@ -82,7 +82,7 @@ pub static QUERY_PROGRESS_SCAN_ROWS: LazyLock> = LazyLock::new(|| register_counter_family(METRIC_QUERY_PROGRESS_SCAN_ROWS)); pub static QUERY_PROGRESS_SCAN_BYTES: LazyLock> = LazyLock::new(|| register_counter_family(METRIC_QUERY_PROGRESS_SCAN_BYTES)); -pub static QUERY_PROGRSS_WRITE_ROWS: LazyLock> = +pub static QUERY_PROGRESS_WRITE_ROWS: LazyLock> = LazyLock::new(|| register_counter_family(METRIC_QUERY_PROGRSS_WRITE_ROWS)); -pub static QUERY_PROGRSS_WRITE_BYTES: LazyLock> = +pub static QUERY_PROGRESS_WRITE_BYTES: LazyLock> = LazyLock::new(|| register_counter_family(METRIC_QUERY_PROGRSS_WRITE_BYTES)); diff --git a/src/query/service/src/sessions/query_ctx_shared.rs b/src/query/service/src/sessions/query_ctx_shared.rs index 20c1ec6b1efd8..d0654c26a1c34 100644 --- a/src/query/service/src/sessions/query_ctx_shared.rs +++ b/src/query/service/src/sessions/query_ctx_shared.rs @@ -22,11 +22,15 @@ use std::time::Duration; use std::time::SystemTime; use dashmap::DashMap; +use databend_common_ast::ast::Query; use databend_common_base::base::short_sql; use databend_common_base::base::Progress; +use databend_common_base::base::ProgressHook; +use databend_common_base::base::ProgressValues; use databend_common_base::base::SpillProgress; use databend_common_base::runtime::drop_guard; use databend_common_base::runtime::metrics::Counter; +use databend_common_base::runtime::metrics::FamilyCounter; use databend_common_base::runtime::Runtime; use databend_common_catalog::catalog::Catalog; use databend_common_catalog::catalog::CatalogManager; @@ -55,7 +59,6 @@ use databend_common_storage::MutationStatus; use databend_common_storage::StorageMetrics; use databend_common_storages_stream::stream_table::StreamTable; use databend_common_users::UserApiProvider; -use opentelemetry_sdk::metrics::data::Metric; use parking_lot::Mutex; use parking_lot::RwLock; use uuid::Uuid; @@ -156,8 +159,10 @@ impl QueryContextShared { session: Arc, cluster_cache: Arc, ) -> Result> { - let progress_metrics = - ProgressMetrics::new(session.get_current_tenant(), cluster_cache.name()); + let progress_metrics = QueryProgressMetrics::new( + session.get_current_tenant().tenant_name(), + &cluster_cache.local_id, + ); Ok(Arc::new(QueryContextShared { query_settings: Settings::create(session.get_current_tenant()), catalog_manager: CatalogManager::instance(), @@ -166,15 +171,13 @@ impl QueryContextShared { data_operator: DataOperator::instance(), init_query_id: Arc::new(RwLock::new(Uuid::new_v4().to_string())), total_scan_values: Arc::new(Progress::create()), - scan_progress: Arc::new(Progress::create().with_hook(MetricProgressHook::new( - progress_metrics.scan_rows.clone(), - progress_metrics.scan_bytes.clone(), - ))), + scan_progress: Arc::new( + Progress::create().with_hook(progress_metrics.scan_progress_hook()), + ), result_progress: Arc::new(Progress::create()), - write_progress: Arc::new(Progress::create().with_hook(MetricProgressHook::new( - progress_metrics.write_rows.clone(), - progress_metrics.write_bytes.clone(), - ))), + write_progress: Arc::new( + Progress::create().with_hook(progress_metrics.write_progress_hook()), + ), error: Arc::new(Mutex::new(None)), warnings: Arc::new(Mutex::new(vec![])), runtime: Arc::new(RwLock::new(None)), @@ -672,14 +675,14 @@ impl Drop for QueryContextShared { } } -struct ProgressMetrics { - scan_rows: Arc, - scan_bytes: Arc, - write_rows: Arc, - write_bytes: Arc, +struct QueryProgressMetrics { + scan_rows: Arc>>, + scan_bytes: Arc>>, + write_rows: Arc>>, + write_bytes: Arc>>, } -impl ProgressMetrics { +impl QueryProgressMetrics { fn new(tenant: &str, cluster: &str) -> Self { let common_labels = vec![ ("tenant", tenant.to_string()), @@ -687,14 +690,47 @@ impl ProgressMetrics { ]; Self { - scan_rows: crate::metrics::interpreter::QUERY_PROGRESS_SCAN_ROWS + scan_rows: databend_common_metrics::interpreter::QUERY_PROGRESS_SCAN_ROWS .get_or_create(&common_labels), - scan_bytes: crate::metrics::interpreter::QUERY_PROGRESS_SCAN_BYTES + scan_bytes: databend_common_metrics::interpreter::QUERY_PROGRESS_SCAN_BYTES .get_or_create(&common_labels), - write_rows: crate::metrics::interpreter::QUERY_PROGRESS_WRITE_ROWS + write_rows: databend_common_metrics::interpreter::QUERY_PROGRESS_WRITE_ROWS .get_or_create(&common_labels), - write_bytes: crate::metrics::interpreter::QUERY_PROGRESS_WRITE_BYTES + write_bytes: databend_common_metrics::interpreter::QUERY_PROGRESS_WRITE_BYTES .get_or_create(&common_labels), } } + + fn scan_progress_hook(&self) -> QueryProgressMetricsHook { + QueryProgressMetricsHook::new(self.scan_rows.clone(), self.scan_bytes.clone()) + } + + fn write_progress_hook(&self) -> QueryProgressMetricsHook { + QueryProgressMetricsHook::new(self.write_rows.clone(), self.write_bytes.clone()) + } +} + +#[derive(Debug)] +pub struct QueryProgressMetricsHook { + rows_metrics: Arc>>, + bytes_metrics: Arc>>, +} + +impl QueryProgressMetricsHook { + pub fn new( + rows_metrics: Arc>>, + bytes_metrics: Arc>>, + ) -> Self { + Self { + rows_metrics, + bytes_metrics, + } + } +} + +impl ProgressHook for QueryProgressMetricsHook { + fn incr(&self, progress_values: &ProgressValues) { + self.rows_metrics.inc_by(progress_values.rows as u64); + self.bytes_metrics.inc_by(progress_values.bytes as u64); + } } From 9970a1bd7fe9b345a5cbc0b97347edb851385b62 Mon Sep 17 00:00:00 2001 From: Li Yazhou Date: Mon, 13 Jan 2025 20:22:10 +0800 Subject: [PATCH 5/6] fix build --- src/common/base/src/base/progress.rs | 1 - src/common/base/src/runtime/metrics/mod.rs | 3 + .../service/src/sessions/query_ctx_shared.rs | 55 +++++++++++-------- 3 files changed, 35 insertions(+), 24 deletions(-) diff --git a/src/common/base/src/base/progress.rs b/src/common/base/src/base/progress.rs index 505dd1b0063ee..d03d903d16637 100644 --- a/src/common/base/src/base/progress.rs +++ b/src/common/base/src/base/progress.rs @@ -14,7 +14,6 @@ use std::sync::atomic::AtomicUsize; use std::sync::atomic::Ordering; -use std::sync::Arc; use serde::Deserialize; use serde::Serialize; diff --git a/src/common/base/src/runtime/metrics/mod.rs b/src/common/base/src/runtime/metrics/mod.rs index cc1e5e3a36708..8d729224176c2 100644 --- a/src/common/base/src/runtime/metrics/mod.rs +++ b/src/common/base/src/runtime/metrics/mod.rs @@ -22,6 +22,9 @@ mod registry; mod sample; pub use counter::Counter; +pub use family_metrics::FamilyCounter as InnerFamilyCounter; +pub use family_metrics::FamilyGauge as InnerFamilyGauge; +pub use family_metrics::FamilyHistogram as InnerFamilyHistogram; pub use gauge::Gauge; pub use histogram::Histogram; pub use histogram::BUCKET_MILLISECONDS; diff --git a/src/query/service/src/sessions/query_ctx_shared.rs b/src/query/service/src/sessions/query_ctx_shared.rs index d0654c26a1c34..563ea53bad544 100644 --- a/src/query/service/src/sessions/query_ctx_shared.rs +++ b/src/query/service/src/sessions/query_ctx_shared.rs @@ -22,15 +22,13 @@ use std::time::Duration; use std::time::SystemTime; use dashmap::DashMap; -use databend_common_ast::ast::Query; use databend_common_base::base::short_sql; use databend_common_base::base::Progress; use databend_common_base::base::ProgressHook; use databend_common_base::base::ProgressValues; use databend_common_base::base::SpillProgress; use databend_common_base::runtime::drop_guard; -use databend_common_base::runtime::metrics::Counter; -use databend_common_base::runtime::metrics::FamilyCounter; +use databend_common_base::runtime::metrics::InnerFamilyCounter; use databend_common_base::runtime::Runtime; use databend_common_catalog::catalog::Catalog; use databend_common_catalog::catalog::CatalogManager; @@ -676,10 +674,10 @@ impl Drop for QueryContextShared { } struct QueryProgressMetrics { - scan_rows: Arc>>, - scan_bytes: Arc>>, - write_rows: Arc>>, - write_bytes: Arc>>, + scan_rows: Arc>>, + scan_bytes: Arc>>, + write_rows: Arc>>, + write_bytes: Arc>>, } impl QueryProgressMetrics { @@ -689,37 +687,48 @@ impl QueryProgressMetrics { ("cluster", cluster.to_string()), ]; + let scan_rows = databend_common_metrics::interpreter::QUERY_PROGRESS_SCAN_ROWS + .get_or_create(&common_labels); + let scan_bytes = databend_common_metrics::interpreter::QUERY_PROGRESS_SCAN_BYTES + .get_or_create(&common_labels); + let write_rows = databend_common_metrics::interpreter::QUERY_PROGRESS_WRITE_ROWS + .get_or_create(&common_labels); + let write_bytes = databend_common_metrics::interpreter::QUERY_PROGRESS_WRITE_BYTES + .get_or_create(&common_labels); + Self { - scan_rows: databend_common_metrics::interpreter::QUERY_PROGRESS_SCAN_ROWS - .get_or_create(&common_labels), - scan_bytes: databend_common_metrics::interpreter::QUERY_PROGRESS_SCAN_BYTES - .get_or_create(&common_labels), - write_rows: databend_common_metrics::interpreter::QUERY_PROGRESS_WRITE_ROWS - .get_or_create(&common_labels), - write_bytes: databend_common_metrics::interpreter::QUERY_PROGRESS_WRITE_BYTES - .get_or_create(&common_labels), + scan_rows, + scan_bytes, + write_rows, + write_bytes, } } - fn scan_progress_hook(&self) -> QueryProgressMetricsHook { - QueryProgressMetricsHook::new(self.scan_rows.clone(), self.scan_bytes.clone()) + fn scan_progress_hook(&self) -> Box { + Box::new(QueryProgressMetricsHook::new( + self.scan_rows.clone(), + self.scan_bytes.clone(), + )) } - fn write_progress_hook(&self) -> QueryProgressMetricsHook { - QueryProgressMetricsHook::new(self.write_rows.clone(), self.write_bytes.clone()) + fn write_progress_hook(&self) -> Box { + Box::new(QueryProgressMetricsHook::new( + self.write_rows.clone(), + self.write_bytes.clone(), + )) } } #[derive(Debug)] pub struct QueryProgressMetricsHook { - rows_metrics: Arc>>, - bytes_metrics: Arc>>, + rows_metrics: Arc>>, + bytes_metrics: Arc>>, } impl QueryProgressMetricsHook { pub fn new( - rows_metrics: Arc>>, - bytes_metrics: Arc>>, + rows_metrics: Arc>>, + bytes_metrics: Arc>>, ) -> Self { Self { rows_metrics, From 297f4e004c0fb9372b1d448006d2b100a6ece484 Mon Sep 17 00:00:00 2001 From: Li Yazhou Date: Mon, 13 Jan 2025 20:28:53 +0800 Subject: [PATCH 6/6] fix typo --- src/common/metrics/src/metrics/interpreter.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/common/metrics/src/metrics/interpreter.rs b/src/common/metrics/src/metrics/interpreter.rs index aee56d29c37e5..aa809f928e142 100644 --- a/src/common/metrics/src/metrics/interpreter.rs +++ b/src/common/metrics/src/metrics/interpreter.rs @@ -40,8 +40,8 @@ const METRIC_QUERY_RESULT_ROWS: &str = "query_result_rows"; const METRIC_QUERY_RESULT_BYTES: &str = "query_result_bytes"; const METRIC_QUERY_PROGRESS_SCAN_ROWS: &str = "query_progress_scan_rows"; const METRIC_QUERY_PROGRESS_SCAN_BYTES: &str = "query_progress_scan_bytes"; -const METRIC_QUERY_PROGRSS_WRITE_ROWS: &str = "query_progress_write_rows"; -const METRIC_QUERY_PROGRSS_WRITE_BYTES: &str = "query_progress_write_bytes"; +const METRIC_QUERY_PROGRESS_WRITE_ROWS: &str = "query_progress_write_rows"; +const METRIC_QUERY_PROGRESS_WRITE_BYTES: &str = "query_progress_write_bytes"; pub static QUERY_START: LazyLock> = LazyLock::new(|| register_counter_family(METRIC_QUERY_START)); @@ -83,6 +83,6 @@ pub static QUERY_PROGRESS_SCAN_ROWS: LazyLock> = pub static QUERY_PROGRESS_SCAN_BYTES: LazyLock> = LazyLock::new(|| register_counter_family(METRIC_QUERY_PROGRESS_SCAN_BYTES)); pub static QUERY_PROGRESS_WRITE_ROWS: LazyLock> = - LazyLock::new(|| register_counter_family(METRIC_QUERY_PROGRSS_WRITE_ROWS)); + LazyLock::new(|| register_counter_family(METRIC_QUERY_PROGRESS_WRITE_ROWS)); pub static QUERY_PROGRESS_WRITE_BYTES: LazyLock> = - LazyLock::new(|| register_counter_family(METRIC_QUERY_PROGRSS_WRITE_BYTES)); + LazyLock::new(|| register_counter_family(METRIC_QUERY_PROGRESS_WRITE_BYTES));