🏡 index : ~doyle/rgit.git

author Jordan Doyle <jordan@doyle.la> 2024-05-12 11:03:58.0 +01:00:00
committer Jordan Doyle <jordan@doyle.la> 2024-05-12 11:03:58.0 +01:00:00
commit
6d9e9b8e3977981d5239c14fcfd81699505998c0 [patch]
tree
10a26fa763eb5bc24c455d73c2fcbe8f8a4ed722
parent
2afb0b0a247087c1217f54150580a7c89d5fcf36
download
6d9e9b8e3977981d5239c14fcfd81699505998c0.tar.gz

Expose tokio-console



Diff

 Cargo.lock         | 356 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 Cargo.toml         |   3 ++-
 .cargo/config.toml |   2 ++
 src/git.rs         |  11 -----------
 src/main.rs        |  30 ++++++++++++++++++++----------
 5 files changed, 355 insertions(+), 47 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 5c9127b..59a72d0 100644
--- a/Cargo.lock
+++ a/Cargo.lock
@@ -149,6 +149,28 @@
]

[[package]]
name = "async-stream"
version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51"
dependencies = [
 "async-stream-impl",
 "futures-core",
 "pin-project-lite",
]

[[package]]
name = "async-stream-impl"
version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
dependencies = [
 "proc-macro2",
 "quote",
 "syn 2.0.48",
]

[[package]]
name = "async-trait"
version = "0.1.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -164,6 +186,34 @@
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"

[[package]]
name = "axum"
version = "0.6.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf"
dependencies = [
 "async-trait",
 "axum-core 0.3.4",
 "bitflags 1.3.2",
 "bytes",
 "futures-util",
 "http 0.2.12",
 "http-body 0.4.6",
 "hyper 0.14.28",
 "itoa",
 "matchit",
 "memchr",
 "mime",
 "percent-encoding",
 "pin-project-lite",
 "rustversion",
 "serde",
 "sync_wrapper",
 "tower",
 "tower-layer",
 "tower-service",
]

[[package]]
name = "axum"
@@ -172,14 +222,14 @@
checksum = "1236b4b292f6c4d6dc34604bb5120d85c3fe1d1aa596bd5cc52ca054d13e7b9e"
dependencies = [
 "async-trait",
 "axum-core",
 "axum-core 0.4.3",
 "axum-macros",
 "bytes",
 "futures-util",
 "http",
 "http-body",
 "http 1.0.0",
 "http-body 1.0.0",
 "http-body-util",
 "hyper",
 "hyper 1.1.0",
 "hyper-util",
 "itoa",
 "matchit",
@@ -198,6 +248,23 @@
 "tower-layer",
 "tower-service",
 "tracing",
]

[[package]]
name = "axum-core"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c"
dependencies = [
 "async-trait",
 "bytes",
 "futures-util",
 "http 0.2.12",
 "http-body 0.4.6",
 "mime",
 "rustversion",
 "tower-layer",
 "tower-service",
]

[[package]]
@@ -209,8 +276,8 @@
 "async-trait",
 "bytes",
 "futures-util",
 "http",
 "http-body",
 "http 1.0.0",
 "http-body 1.0.0",
 "http-body-util",
 "mime",
 "pin-project-lite",
@@ -386,6 +453,12 @@
version = "1.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed2490600f404f2b94c167e31d3ed1d5f3c225a0f3b80230053b3e0b7b962bd9"

[[package]]
name = "byteorder"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"

[[package]]
name = "bytes"
@@ -570,6 +643,44 @@
]

[[package]]
name = "console-api"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd326812b3fd01da5bb1af7d340d0d555fd3d4b641e7f1dfcf5962a902952787"
dependencies = [
 "futures-core",
 "prost",
 "prost-types",
 "tonic",
 "tracing-core",
]

[[package]]
name = "console-subscriber"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7481d4c57092cd1c19dd541b92bdce883de840df30aa5d03fd48a3935c01842e"
dependencies = [
 "console-api",
 "crossbeam-channel",
 "crossbeam-utils",
 "futures-task",
 "hdrhistogram",
 "humantime",
 "parking_lot",
 "prost-types",
 "serde",
 "serde_json",
 "thread_local",
 "tokio",
 "tokio-stream",
 "tonic",
 "tracing",
 "tracing-core",
 "tracing-subscriber",
]

[[package]]
name = "const-random"
version = "0.1.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1016,6 +1127,25 @@
 "log",
 "regex-automata 0.4.5",
 "regex-syntax 0.8.2",
]

[[package]]
name = "h2"
version = "0.3.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8"
dependencies = [
 "bytes",
 "fnv",
 "futures-core",
 "futures-sink",
 "futures-util",
 "http 0.2.12",
 "indexmap 2.2.2",
 "slab",
 "tokio",
 "tokio-util",
 "tracing",
]

[[package]]
@@ -1029,8 +1159,8 @@
 "futures-core",
 "futures-sink",
 "futures-util",
 "http",
 "indexmap",
 "http 1.0.0",
 "indexmap 2.2.2",
 "slab",
 "tokio",
 "tokio-util",
@@ -1039,9 +1169,28 @@

[[package]]
name = "hashbrown"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"

[[package]]
name = "hashbrown"
version = "0.14.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"

[[package]]
name = "hdrhistogram"
version = "7.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d"
dependencies = [
 "base64",
 "byteorder",
 "flate2",
 "nom",
 "num-traits",
]

[[package]]
name = "heck"
@@ -1068,6 +1217,17 @@
checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
dependencies = [
 "windows-sys 0.52.0",
]

[[package]]
name = "http"
version = "0.2.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
dependencies = [
 "bytes",
 "fnv",
 "itoa",
]

[[package]]
@@ -1079,6 +1239,17 @@
 "bytes",
 "fnv",
 "itoa",
]

[[package]]
name = "http-body"
version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
dependencies = [
 "bytes",
 "http 0.2.12",
 "pin-project-lite",
]

[[package]]
@@ -1088,7 +1259,7 @@
checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643"
dependencies = [
 "bytes",
 "http",
 "http 1.0.0",
]

[[package]]
@@ -1099,8 +1270,8 @@
dependencies = [
 "bytes",
 "futures-util",
 "http",
 "http-body",
 "http 1.0.0",
 "http-body 1.0.0",
 "pin-project-lite",
]

@@ -1130,6 +1301,30 @@
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"

[[package]]
name = "hyper"
version = "0.14.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80"
dependencies = [
 "bytes",
 "futures-channel",
 "futures-core",
 "futures-util",
 "h2 0.3.26",
 "http 0.2.12",
 "http-body 0.4.6",
 "httparse",
 "httpdate",
 "itoa",
 "pin-project-lite",
 "socket2",
 "tokio",
 "tower-service",
 "tracing",
 "want",
]

[[package]]
name = "hyper"
@@ -1140,14 +1335,26 @@
 "bytes",
 "futures-channel",
 "futures-util",
 "h2",
 "http",
 "http-body",
 "h2 0.4.2",
 "http 1.0.0",
 "http-body 1.0.0",
 "httparse",
 "httpdate",
 "itoa",
 "pin-project-lite",
 "tokio",
]

[[package]]
name = "hyper-timeout"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1"
dependencies = [
 "hyper 0.14.28",
 "pin-project-lite",
 "tokio",
 "tokio-io-timeout",
]

[[package]]
@@ -1158,9 +1365,9 @@
dependencies = [
 "bytes",
 "futures-util",
 "http",
 "http-body",
 "hyper",
 "http 1.0.0",
 "http-body 1.0.0",
 "hyper 1.1.0",
 "pin-project-lite",
 "socket2",
 "tokio",
@@ -1180,6 +1387,16 @@
dependencies = [
 "unicode-bidi",
 "unicode-normalization",
]

[[package]]
name = "indexmap"
version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [
 "autocfg",
 "hashbrown 0.12.3",
]

[[package]]
@@ -1189,7 +1406,7 @@
checksum = "824b2ae422412366ba479e8111fd301f7b5faece8149317bb81925979a53f520"
dependencies = [
 "equivalent",
 "hashbrown",
 "hashbrown 0.14.3",
]

[[package]]
@@ -1604,7 +1821,7 @@
checksum = "a4d6a8c22fc714f0c2373e6091bf6f5e9b37b1bc0b1184874b7e0a4e303d318f"
dependencies = [
 "dlv-list",
 "hashbrown",
 "hashbrown 0.14.3",
]

[[package]]
@@ -1708,7 +1925,7 @@
checksum = "e5699cc8a63d1aa2b1ee8e12b9ad70ac790d65788cd36101fa37f87ea46c4cef"
dependencies = [
 "base64",
 "indexmap",
 "indexmap 2.2.2",
 "line-wrap",
 "quick-xml",
 "serde",
@@ -1744,6 +1961,38 @@
checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
dependencies = [
 "unicode-ident",
]

[[package]]
name = "prost"
version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d0f5d036824e4761737860779c906171497f6d55681139d8312388f8fe398922"
dependencies = [
 "bytes",
 "prost-derive",
]

[[package]]
name = "prost-derive"
version = "0.12.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9554e3ab233f0a932403704f1a1d08c30d5ccd931adfdfa1e8b5a19b52c1d55a"
dependencies = [
 "anyhow",
 "itertools",
 "proc-macro2",
 "quote",
 "syn 2.0.48",
]

[[package]]
name = "prost-types"
version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3235c33eb02c1f1e212abdbe34c78b264b038fb58ca612664343271e36e55ffe"
dependencies = [
 "prost",
]

[[package]]
@@ -1903,13 +2152,14 @@
dependencies = [
 "anyhow",
 "askama",
 "axum",
 "axum 0.7.4",
 "axum-macros",
 "bat",
 "bincode",
 "bytes",
 "clap",
 "comrak",
 "console-subscriber",
 "flate2",
 "futures",
 "git2",
@@ -2119,7 +2369,7 @@
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "adf8a49373e98a4c5f0ceb5d05aa7c648d75f63774981ed95b7c7443bbd50c6e"
dependencies = [
 "indexmap",
 "indexmap 2.2.2",
 "itoa",
 "ryu",
 "serde",
@@ -2443,7 +2693,18 @@
 "signal-hook-registry",
 "socket2",
 "tokio-macros",
 "tracing",
 "windows-sys 0.48.0",
]

[[package]]
name = "tokio-io-timeout"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf"
dependencies = [
 "pin-project-lite",
 "tokio",
]

[[package]]
@@ -2478,7 +2739,34 @@
 "futures-core",
 "futures-sink",
 "pin-project-lite",
 "tokio",
 "tracing",
]

[[package]]
name = "tonic"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d560933a0de61cf715926b9cac824d4c883c2c43142f787595e48280c40a1d0e"
dependencies = [
 "async-stream",
 "async-trait",
 "axum 0.6.20",
 "base64",
 "bytes",
 "h2 0.3.26",
 "http 0.2.12",
 "http-body 0.4.6",
 "hyper 0.14.28",
 "hyper-timeout",
 "percent-encoding",
 "pin-project",
 "prost",
 "tokio",
 "tokio-stream",
 "tower",
 "tower-layer",
 "tower-service",
 "tracing",
]

@@ -2490,9 +2778,13 @@
dependencies = [
 "futures-core",
 "futures-util",
 "indexmap 1.9.3",
 "pin-project",
 "pin-project-lite",
 "rand",
 "slab",
 "tokio",
 "tokio-util",
 "tower-layer",
 "tower-service",
 "tracing",
@@ -2506,8 +2798,8 @@
dependencies = [
 "bitflags 2.4.2",
 "bytes",
 "http",
 "http-body",
 "http 1.0.0",
 "http-body 1.0.0",
 "http-body-util",
 "pin-project-lite",
 "tower-layer",
@@ -2579,6 +2871,7 @@
 "matchers",
 "nu-ansi-term 0.46.0",
 "once_cell",
 "parking_lot",
 "regex",
 "sharded-slab",
 "smallvec",
@@ -2593,6 +2886,12 @@
version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "859eb650cfee7434994602c3a68b25d77ad9e68c8a6cd491616ef86661382eb3"

[[package]]
name = "try-lock"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"

[[package]]
name = "typed-arena"
@@ -2712,6 +3011,15 @@
dependencies = [
 "same-file",
 "winapi-util",
]

[[package]]
name = "want"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
dependencies = [
 "try-lock",
]

[[package]]
diff --git a/Cargo.toml b/Cargo.toml
index 8545710..d0fe320 100644
--- a/Cargo.toml
+++ a/Cargo.toml
@@ -16,6 +16,7 @@
bat = { version = "0.24.0", default-features = false, features = ["build-assets"] }
bytes = "1.5"
bincode = "1.3"
console-subscriber = { version = "0.2", features = ["parking_lot"] }
comrak = "0.21.0"
clap = { version = "4.4.10", features = ["cargo", "derive"] }
futures = "0.3"
@@ -38,7 +39,7 @@
flate2 = "1.0"
time = { version = "0.3", features = ["serde"] }
timeago = { version = "0.4.2", default-features = false }
tokio = { version = "1.19", features = ["full"] }
tokio = { version = "1.19", features = ["full", "tracing"] }
tokio-util = { version = "0.7.10", features = ["io"] }
tokio-stream = "0.1"
tower = "0.4"
diff --git a/.cargo/config.toml b/.cargo/config.toml
new file mode 100644
index 0000000..bff29e6 100644
--- /dev/null
+++ a/.cargo/config.toml
@@ -1,0 +1,2 @@
[build]
rustflags = ["--cfg", "tokio_unstable"]
diff --git a/src/git.rs b/src/git.rs
index 1fc0379..7f40cf3 100644
--- a/src/git.rs
+++ a/src/git.rs
@@ -518,17 +518,6 @@
}

#[derive(Debug)]
pub struct Branch {
    pub name: String,
    pub commit: Commit,
}

#[derive(Debug)]
pub struct Remote {
    pub name: String,
}

#[derive(Debug)]
pub enum TaggedObject {
    Commit(String),
    Tree(String),
diff --git a/src/main.rs b/src/main.rs
index b5c2d65..234aa87 100644
--- a/src/main.rs
+++ a/src/main.rs
@@ -37,7 +37,7 @@
use tower_http::cors::CorsLayer;
use tower_layer::layer_fn;
use tracing::{error, info, instrument, warn};
use tracing_subscriber::EnvFilter;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt, EnvFilter};

use crate::{
    database::schema::prefixes::{
@@ -64,9 +64,9 @@
#[derive(Parser, Debug)]
#[clap(author, version, about)]
pub struct Args {
    /// Path to a directory in which the RocksDB database should be stored, will be created if it doesn't already exist

    /// Path to a directory in which the `RocksDB` database should be stored, will be created if it doesn't already exist

    ///

    /// The RocksDB database is very quick to generate, so this can be pointed to temporary storage

    /// The `RocksDB` database is very quick to generate, so this can be pointed to temporary storage

    #[clap(short, long, value_parser)]
    db_store: PathBuf,
    /// The socket address to bind to (eg. 0.0.0.0:3333)

@@ -115,10 +115,21 @@
        std::env::set_var("RUST_LOG", "info");
    }

    let subscriber = tracing_subscriber::fmt().with_env_filter(EnvFilter::from_default_env());
    let console_layer = console_subscriber::spawn();

    let logger_layer = tracing_subscriber::fmt::layer();
    #[cfg(debug_assertions)]
    let subscriber = subscriber.pretty();
    subscriber.init();
    let logger_layer = logger_layer.pretty();

    let env_filter = EnvFilter::from_default_env()
        .add_directive("tokio=trace".parse()?)
        .add_directive("runtime=trace".parse()?);

    tracing_subscriber::registry()
        .with(env_filter)
        .with(console_layer)
        .with(logger_layer)
        .init();

    let db = open_db(&args)?;

@@ -200,11 +211,8 @@
        .layer(CorsLayer::new());

    let listener = TcpListener::bind(&args.bind_address).await?;
    let server = axum::serve(
        listener,
        app.into_make_service_with_connect_info::<SocketAddr>(),
    )
    .into_future();
    let app = app.into_make_service_with_connect_info::<SocketAddr>();
    let server = axum::serve(listener, app).into_future();

    tokio::select! {
        res = server => res.context("failed to run server"),