revert switching metrics to tiny-http

This commit is contained in:
Ruben Fiszel
2022-10-30 01:55:44 +02:00
parent e90a8e2ca9
commit 2e8211d41f
4 changed files with 23 additions and 52 deletions
+5 -30
View File
@@ -76,12 +76,6 @@ dependencies = [
"password-hash",
]
[[package]]
name = "ascii"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16"
[[package]]
name = "ascii-canvas"
version = "3.0.0"
@@ -388,9 +382,9 @@ checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db"
[[package]]
name = "cc"
version = "1.0.73"
version = "1.0.74"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
checksum = "581f5dba903aac52ea3feb5ec4810848460ee833876f1f9b0fdeab1f19091574"
[[package]]
name = "cfg-if"
@@ -414,12 +408,6 @@ dependencies = [
"winapi",
]
[[package]]
name = "chunked_transfer"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fff857943da45f546682664a79488be82e69e43c1a7a2307679ab9afb3a66d2e"
[[package]]
name = "cipher"
version = "0.3.0"
@@ -2590,7 +2578,7 @@ dependencies = [
[[package]]
name = "rustpython-ast"
version = "0.1.0"
source = "git+https://github.com/RustPython/RustPython#835771b7ea2903bf641f00db1cc3c88b74e2a08f"
source = "git+https://github.com/RustPython/RustPython#77b821a1941019fe34f73ce17cea013ae1b98fd0"
dependencies = [
"num-bigint",
"rustpython-compiler-core",
@@ -2599,7 +2587,7 @@ dependencies = [
[[package]]
name = "rustpython-compiler-core"
version = "0.1.2"
source = "git+https://github.com/RustPython/RustPython#835771b7ea2903bf641f00db1cc3c88b74e2a08f"
source = "git+https://github.com/RustPython/RustPython#77b821a1941019fe34f73ce17cea013ae1b98fd0"
dependencies = [
"bincode",
"bitflags",
@@ -2616,7 +2604,7 @@ dependencies = [
[[package]]
name = "rustpython-parser"
version = "0.1.2"
source = "git+https://github.com/RustPython/RustPython#835771b7ea2903bf641f00db1cc3c88b74e2a08f"
source = "git+https://github.com/RustPython/RustPython#77b821a1941019fe34f73ce17cea013ae1b98fd0"
dependencies = [
"ahash",
"anyhow",
@@ -3447,18 +3435,6 @@ dependencies = [
"crunchy",
]
[[package]]
name = "tiny_http"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "389915df6413a2e74fb181895f933386023c71110878cd0825588928e64cdc82"
dependencies = [
"ascii",
"chunked_transfer",
"httpdate",
"log",
]
[[package]]
name = "tinyvec"
version = "1.6.0"
@@ -4383,7 +4359,6 @@ dependencies = [
"sha2 0.10.6",
"sqlx",
"thiserror",
"tiny_http",
"tokio",
"tracing",
"tracing-subscriber",
-1
View File
@@ -59,7 +59,6 @@ windmill-parser = { path = "./parsers/windmill-parser" }
windmill-parser-ts = { path = "./parsers/windmill-parser-ts" }
windmill-parser-py = { path = "./parsers/windmill-parser-py" }
windmill-parser-go = { path = "./parsers/windmill-parser-go" }
tiny_http = "0.12.0"
axum = { version = "^0", features = ["headers"] }
headers = "^0"
hyper = { version = "^0", features = ["full"] }
+1 -2
View File
@@ -11,7 +11,7 @@ hyper = ["dep:hyper"]
tokio = ["dep:tokio"]
axum = ["dep:axum", "dep:tracing"]
reqwest = ["dep:reqwest"]
prometheus = ["dep:tiny_http", "dep:prometheus"]
prometheus = ["dep:prometheus"]
tracing_init = [
"dep:console-subscriber",
"dep:tracing",
@@ -35,7 +35,6 @@ hex.workspace = true
rand.workspace = true
sqlx = { workspace = true, optional = true, features = ["postgres"] }
uuid.workspace = true
tiny_http = { workspace = true, optional = true }
prometheus = { workspace = true, optional = true }
tracing = { workspace = true, optional = true }
axum = { workspace = true, optional = true }
+17 -19
View File
@@ -8,6 +8,8 @@
use std::net::SocketAddr;
use error::Error;
pub mod error;
pub mod external_ip;
pub mod flows;
@@ -51,24 +53,23 @@ pub async fn shutdown_signal(tx: tokio::sync::broadcast::Sender<()>) -> anyhow::
#[cfg(feature = "prometheus")]
pub async fn serve_metrics(
addr: SocketAddr,
rx: tokio::sync::broadcast::Receiver<()>,
) -> Result<(), anyhow::Error> {
use tokio::task::yield_now;
let server = tiny_http::Server::http(addr).map_err(|e| anyhow::anyhow!(e.to_string()))?;
for request in server.incoming_requests() {
yield_now().await;
if !rx.is_empty() {
break;
}
let response = tiny_http::Response::from_string(metrics().await?);
let _ = request.respond(response);
}
Ok(())
mut rx: tokio::sync::broadcast::Receiver<()>,
) -> Result<(), hyper::Error> {
use axum::{routing::get, Router};
axum::Server::bind(&addr)
.serve(
Router::new()
.route("/metrics", get(metrics))
.into_make_service(),
)
.with_graceful_shutdown(async {
rx.recv().await.ok();
println!("Graceful shutdown of metrics");
})
.await
}
#[cfg(feature = "prometheus")]
async fn metrics() -> Result<String, error::Error> {
async fn metrics() -> Result<String, Error> {
let metric_families = prometheus::gather();
Ok(prometheus::TextEncoder::new()
.encode_to_string(&metric_families)
@@ -78,7 +79,6 @@ async fn metrics() -> Result<String, error::Error> {
#[cfg(feature = "sqlx")]
pub async fn connect_db() -> anyhow::Result<sqlx::Pool<sqlx::Postgres>> {
use anyhow::Context;
use error::Error;
let database_url = std::env::var("DATABASE_URL")
.map_err(|_| Error::BadConfig("DATABASE_URL env var is missing".to_string()))?;
@@ -98,8 +98,6 @@ pub async fn connect(
) -> Result<sqlx::Pool<sqlx::Postgres>, error::Error> {
use std::time::Duration;
use crate::error::Error;
sqlx::postgres::PgPoolOptions::new()
.max_connections(max_connections)
.max_lifetime(Duration::from_secs(30 * 60)) // 30 mins