Description: Disable metrics from the server.
 Depends on unavailable deps. Plus, some might prefer not on public servers.
Forwarded: not-needed
Last-Update: 2025-08-16
--- a/crates/atuin-server/src/lib.rs
+++ b/crates/atuin-server/src/lib.rs
@@ -12,3 +12,3 @@
 mod handlers;
-mod metrics;
+//mod metrics;
 mod router;
@@ -24,2 +24,7 @@
 
+macro_rules! null_counter {
+    ($($t:expr),*) => {};
+}
+pub(crate) use null_counter;
+
 #[cfg(target_family = "unix")]
@@ -115,3 +120,4 @@
 // the public.
-pub async fn launch_metrics_server(host: String, port: u16) -> Result<()> {
+pub async fn launch_metrics_server(host: String, port: u16) -> Result<()> { Ok(()) }
+#[cfg(any())] pub async fn launch_metrics_server(host: String, port: u16) -> Result<()> {
     let listener = TcpListener::bind((host, port))
--- a/crates/atuin-server/src/handlers/history.rs
+++ b/crates/atuin-server/src/handlers/history.rs
@@ -7,3 +7,3 @@
 };
-use metrics::counter;
+use crate::null_counter as counter;
 use time::{Month, UtcOffset};
--- a/crates/atuin-server/src/handlers/user.rs
+++ b/crates/atuin-server/src/handlers/user.rs
@@ -13,3 +13,3 @@
 };
-use metrics::counter;
+use crate::null_counter as counter;
 
--- a/crates/atuin-server/src/router.rs
+++ b/crates/atuin-server/src/router.rs
@@ -17,3 +17,3 @@
     handlers::{ErrorResponseStatus, RespExt},
-    metrics,
+    //metrics,
     settings::Settings,
@@ -151,3 +151,3 @@
             .layer(TraceLayer::new_for_http())
-            .layer(axum::middleware::from_fn(metrics::track_metrics))
+            //.layer(axum::middleware::from_fn(metrics::track_metrics))
             .layer(axum::middleware::from_fn(semver)),
--- a/crates/atuin-server/src/handlers/v0/record.rs
+++ b/crates/atuin-server/src/handlers/v0/record.rs
@@ -1,3 +1,3 @@
 use axum::{Json, extract::Query, extract::State, http::StatusCode};
-use metrics::counter;
+use crate::null_counter as counter;
 use serde::Deserialize;
--- a/crates/atuin-server/src/handlers/v0/store.rs
+++ b/crates/atuin-server/src/handlers/v0/store.rs
@@ -1,3 +1,3 @@
 use axum::{extract::Query, extract::State, http::StatusCode};
-use metrics::counter;
+use crate::null_counter as counter;
 use serde::Deserialize;
--- a/crates/atuin-server/Cargo.toml
+++ b/crates/atuin-server/Cargo.toml
@@ -34,4 +34,4 @@
 semver = { workspace = true }
-metrics-exporter-prometheus = "0.12.1"
-metrics = "0.21.1"
+#metrics-exporter-prometheus = "0.12.1"
+#metrics = "0.21.1"
 postmark = {version= "0.11", features=["reqwest", "reqwest-rustls-tls"]}
--- a/crates/atuin-server/server.toml
+++ b/crates/atuin-server/server.toml
@@ -26,2 +26,3 @@
 
+## Debian: metrics is disabled in Debian. This section takes no effect.
 # [metrics]
--- a/crates/atuin-server-postgres/Cargo.toml
+++ b/crates/atuin-server-postgres/Cargo.toml
@@ -22,3 +22,3 @@
 uuid = { workspace = true }
-metrics = "0.21.1"
+#metrics = "0.21.1"
 futures-util = "0.3"
--- a/crates/atuin-server-sqlite/Cargo.toml
+++ b/crates/atuin-server-sqlite/Cargo.toml
@@ -22,3 +22,3 @@
 uuid = { workspace = true }
-metrics = "0.21.1"
+#metrics = "0.21.1"
 futures-util = "0.3"
--- a/crates/atuin/src/command/server.rs
+++ b/crates/atuin/src/command/server.rs
@@ -10,3 +10,3 @@
 
-use atuin_server::{Settings, example_config, launch, launch_metrics_server};
+use atuin_server::{Settings, example_config, launch, /*launch_metrics_server*/};
 
@@ -47,3 +47,3 @@
 
-                if settings.metrics.enable {
+                #[cfg(feature = "metrics")] if settings.metrics.enable {
                     tokio::spawn(launch_metrics_server(
--- a/crates/atuin/tests/common/mod.rs
+++ b/crates/atuin/tests/common/mod.rs
@@ -39,3 +39,3 @@
         db_settings: DbSettings { db_uri },
-        metrics: atuin_server::settings::Metrics::default(),
+        //metrics: atuin_server::settings::Metrics::default(),
         tls: atuin_server::settings::Tls::default(),
--- a/crates/atuin-server/src/settings.rs
+++ b/crates/atuin-server/src/settings.rs
@@ -38,3 +38,3 @@
 #[derive(Clone, Debug, Deserialize, Serialize)]
-pub struct Metrics {
+#[cfg(feature = "metrics")] pub struct Metrics {
     #[serde(alias = "enabled")]
@@ -45,3 +45,3 @@
 
-impl Default for Metrics {
+#[cfg(feature = "metrics")] impl Default for Metrics {
     fn default() -> Self {
@@ -66,3 +66,3 @@
     pub register_webhook_username: String,
-    pub metrics: Metrics,
+    #[cfg(feature = "metrics")] pub metrics: Metrics,
     pub tls: Tls,
