diff --git a/Cargo.lock b/Cargo.lock index d715ad2e..ddc410fc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -20,9 +20,9 @@ dependencies = [ [[package]] name = "ahash" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43bb833f0bf979d8475d38fbf09ed3b8a55e1885fe93ad3f93239fc6a4f17b98" +checksum = "991984e3fd003e7ba02eb724f87a0f997b78677c46c0e91f8424ad7394c9886a" dependencies = [ "getrandom 0.2.3", "once_cell", @@ -93,6 +93,27 @@ dependencies = [ "tokio", ] +[[package]] +name = "async-stream" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "171374e7e3b2504e0e5236e3b59260560f9fe94bfe9ac39ba5e4e929c5590625" +dependencies = [ + "async-stream-impl", + "futures-core", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "648ed8c8d2ce5409ccd57453d9d1b214b342a0d69376a6feda1fd6cae3299308" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "async-trait" version = "0.1.51" @@ -306,9 +327,9 @@ checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" [[package]] name = "cc" -version = "1.0.70" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26a6ce4b6a484fa3edb70f7efa6fc430fd2b87285fe8b84304fd0936faa0dc0" +checksum = "79c2681d6594606957bbb8631c4b90a7fcaaa72cdb714743a437b156d6a7eedd" [[package]] name = "cfg-if" @@ -582,6 +603,16 @@ dependencies = [ "syn", ] +[[package]] +name = "dashmap" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c" +dependencies = [ + "cfg-if 1.0.0", + "num_cpus", +] + [[package]] name = "data-encoding" version = "2.3.2" @@ -590,9 +621,9 @@ checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" [[package]] name = "der" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2adca118c71ecd9ae094d4b68257b3fdfcb711a612b9eec7b5a0d27a5a70a5b4" +checksum = "28e98c534e9c8a0483aa01d6f6913bc063de254311bd267c9cf535e9b70e15b2" dependencies = [ "const-oid", "crypto-bigint", @@ -735,6 +766,12 @@ dependencies = [ "version_check 0.9.3", ] +[[package]] +name = "fixedbitset" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" + [[package]] name = "flate2" version = "1.0.22" @@ -777,6 +814,7 @@ checksum = "a12aa0eb539080d55c3f2d45a67c3b58b6b0773c1a3ca2dfec66d58c97fd66ca" dependencies = [ "futures-channel", "futures-core", + "futures-executor", "futures-io", "futures-sink", "futures-task", @@ -799,6 +837,17 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88d1c26957f23603395cd326b0ffe64124b818f4449552f960d815cfba83a53d" +[[package]] +name = "futures-executor" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45025be030969d763025784f7f355043dc6bc74093e4ecc5000ca4dc50d8745c" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + [[package]] name = "futures-intrusive" version = "0.4.0" @@ -848,10 +897,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36568465210a3a6ee45e1f165136d68671471a501e632e9a98d96872222b5481" dependencies = [ "autocfg 1.0.1", + "futures-channel", "futures-core", + "futures-io", "futures-macro", "futures-sink", "futures-task", + "memchr", "pin-project-lite", "pin-utils", "proc-macro-hack", @@ -1115,6 +1167,18 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +dependencies = [ + "hyper", + "pin-project-lite", + "tokio", + "tokio-io-timeout", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -1327,16 +1391,21 @@ dependencies = [ "argon2", "clap", "dotenv", + "futures", "hyper", "indoc", "mas-config", "mas-core", + "opentelemetry", + "opentelemetry-otlp", + "opentelemetry-semantic-conventions", "schemars", "serde_yaml", "tokio", "tower", "tower-http", "tracing", + "tracing-opentelemetry", "tracing-subscriber", "warp", ] @@ -1510,6 +1579,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "multimap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" + [[package]] name = "multipart" version = "0.17.1" @@ -1667,6 +1742,53 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +[[package]] +name = "opentelemetry" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf9b1c4e9a6c4de793c632496fa490bdc0e1eea73f0c91394f7b6990935d22" +dependencies = [ + "async-trait", + "crossbeam-channel 0.5.1", + "dashmap", + "fnv", + "futures", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project", + "rand 0.8.4", + "thiserror", + "tokio", + "tokio-stream", +] + +[[package]] +name = "opentelemetry-otlp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f19d4b43842433c420c548c985d158f5628bba5b518e0be64627926d19889992" +dependencies = [ + "async-trait", + "futures", + "http", + "opentelemetry", + "prost", + "thiserror", + "tokio", + "tonic", + "tonic-build", +] + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffeac823339e8b0f27b961f4385057bf9f97f2863bc745bd015fd6091f2270e9" +dependencies = [ + "opentelemetry", +] + [[package]] name = "os_str_bytes" version = "3.1.0" @@ -1825,6 +1947,16 @@ dependencies = [ "sha-1 0.8.2", ] +[[package]] +name = "petgraph" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" +dependencies = [ + "fixedbitset", + "indexmap", +] + [[package]] name = "pin-project" version = "1.0.8" @@ -1936,9 +2068,9 @@ checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" [[package]] name = "proc-macro2" -version = "1.0.29" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f5105d4fdaab20335ca9565e106a5d9b82b6219b5ba735731124ac6711d23d" +checksum = "edc3358ebc67bc8b7fa0c007f945b0b18226f78437d61bec735a9eb96b61ee70" dependencies = [ "unicode-xid", ] @@ -1956,6 +2088,57 @@ dependencies = [ "yansi", ] +[[package]] +name = "prost" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de5e2533f59d08fcf364fd374ebda0692a70bd6d7e66ef97f306f45c6c5d8020" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-build" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "355f634b43cdd80724ee7848f95770e7e70eefa6dcf14fea676216573b8fd603" +dependencies = [ + "bytes", + "heck", + "itertools", + "log", + "multimap", + "petgraph", + "prost", + "prost-types", + "tempfile", + "which", +] + +[[package]] +name = "prost-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "600d2f334aa05acb02a755e217ef1ab6dea4d51b58b7846588b747edec04efba" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "prost-types" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "603bbd6394701d13f3f25aada59c7de9d35a6a5887cfc156181234a44002771b" +dependencies = [ + "bytes", + "prost", +] + [[package]] name = "quick-error" version = "1.2.3" @@ -1964,9 +2147,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05" dependencies = [ "proc-macro2", ] @@ -2407,9 +2590,9 @@ dependencies = [ [[package]] name = "sharded-slab" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "740223c51853f3145fe7c90360d2d4232f2b62e3449489c207eccde818979982" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" dependencies = [ "lazy_static", ] @@ -2435,9 +2618,9 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c307a32c1c5c437f38c7fd45d753050587732ba8628319fbdf12a7e289ccc590" +checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "slug" @@ -2691,9 +2874,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.78" +version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4eac2e6c19f5c3abc0c229bea31ff0b9b091c7b14990e8924b92902a303a0c0" +checksum = "d010a1623fbd906d51d650a9916aaefc05ffa0e4053ff7fe601167f3e715d194" dependencies = [ "proc-macro2", "quote", @@ -2702,9 +2885,9 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.12.5" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "474aaa926faa1603c40b7885a9eaea29b444d1cb2850cb7c0e37bb1a4182f4fa" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2", "quote", @@ -2774,18 +2957,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.29" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "602eca064b2d83369e2b2f34b09c70b605402801927c65c11071ac911d299b88" +checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.29" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad553cc2c78e8de258400763a647e80e6d1b31ee237275d756f6836d204494c" +checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" dependencies = [ "proc-macro2", "quote", @@ -2885,6 +3068,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "tokio-io-timeout" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90c49f106be240de154571dd31fbe48acb10ba6c6dd6f6517ad603abffa42de9" +dependencies = [ + "pin-project-lite", + "tokio", +] + [[package]] name = "tokio-macros" version = "1.4.1" @@ -2945,6 +3138,49 @@ dependencies = [ "tokio", ] +[[package]] +name = "tonic" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "796c5e1cd49905e65dd8e700d4cb1dffcbfdb4fc9d017de08c1a537afd83627c" +dependencies = [ + "async-stream", + "async-trait", + "base64 0.13.0", + "bytes", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-timeout", + "percent-encoding", + "pin-project", + "prost", + "prost-derive", + "tokio", + "tokio-stream", + "tokio-util", + "tower", + "tower-layer", + "tower-service", + "tracing", + "tracing-futures", +] + +[[package]] +name = "tonic-build" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12b52d07035516c2b74337d2ac7746075e7dcae7643816c1b12c5ff8a7484c08" +dependencies = [ + "proc-macro2", + "prost-build", + "quote", + "syn", +] + [[package]] name = "tower" version = "0.4.8" @@ -3005,9 +3241,9 @@ checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" [[package]] name = "tracing" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84f96e095c0c82419687c20ddf5cb3eadb61f4e1405923c9dc8e53a1adacbda8" +checksum = "375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105" dependencies = [ "cfg-if 1.0.0", "log", @@ -3018,9 +3254,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4f915eb6abf914599c200260efced9203504c4c37380af10cdf3b7d36970650" +checksum = "f4f480b8f81512e825f337ad51e94c1eb5d3bbdf2b363dcd01e2b19a9ffe3f8e" dependencies = [ "proc-macro2", "quote", @@ -3036,6 +3272,16 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + [[package]] name = "tracing-log" version = "0.1.2" @@ -3047,6 +3293,19 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-opentelemetry" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "599f388ecb26b28d9c1b2e4437ae019a7b336018b45ed911458cd9ebf91129f6" +dependencies = [ + "opentelemetry", + "tracing", + "tracing-core", + "tracing-log", + "tracing-subscriber", +] + [[package]] name = "tracing-serde" version = "0.1.2" @@ -3059,9 +3318,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.2.24" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdd0568dbfe3baf7048b7908d2b32bca0d81cd56bec6d2a8f894b01d74f86be3" +checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" dependencies = [ "ansi_term", "chrono", @@ -3195,9 +3454,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246f4c42e67e7a4e3c6106ff716a5d067d4132a642840b242e357e468a2a0085" +checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" [[package]] name = "unicode-normalization" @@ -3436,6 +3695,17 @@ dependencies = [ "webpki", ] +[[package]] +name = "which" +version = "4.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea187a8ef279bc014ec368c27a920da2024d2a711109bfbe3440585d5cf27ad9" +dependencies = [ + "either", + "lazy_static", + "libc", +] + [[package]] name = "whoami" version = "1.1.5" diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 761be464..0c9ad4ba 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -7,10 +7,11 @@ license = "Apache-2.0" [dependencies] tokio = { version = "1.12.0", features = ["full"] } +futures = "0.3.17" anyhow = "1.0.44" clap = "3.0.0-beta.4" -tracing = "0.1.28" -tracing-subscriber = "0.2.24" +tracing = "0.1.29" +tracing-subscriber = "0.2.25" dotenv = "0.15.0" schemars = { version = "0.8.6", features = ["url", "chrono"] } tower = { version = "0.4.8", features = ["full"] } @@ -19,6 +20,10 @@ hyper = { version = "0.14.13", features = ["full"] } serde_yaml = "0.8.21" warp = "0.3.1" argon2 = { version = "0.3.1", features = ["password-hash"] } +opentelemetry = { version = "0.16.0", features = ["trace", "metrics", "rt-tokio"] } +opentelemetry-otlp = { version = "0.9.0", features = ["trace", "metrics"] } +opentelemetry-semantic-conventions = "0.8.0" +tracing-opentelemetry = "0.15.0" mas-config = { path = "../config" } mas-core = { path = "../core" } diff --git a/crates/cli/src/main.rs b/crates/cli/src/main.rs index 2989ba01..1dcefff7 100644 --- a/crates/cli/src/main.rs +++ b/crates/cli/src/main.rs @@ -23,7 +23,6 @@ use std::path::PathBuf; use anyhow::Context; use clap::Clap; use mas_config::ConfigurationSection; -use tracing::trace; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt, EnvFilter, Registry}; use self::{ @@ -35,6 +34,7 @@ mod config; mod database; mod manage; mod server; +mod telemetry; mod templates; #[derive(Clap, Debug)] @@ -91,27 +91,50 @@ impl RootCommand { #[tokio::main] async fn main() -> anyhow::Result<()> { + // We're splitting the "fallible" part of main in another function to have a + // chance to shutdown the telemetry exporters regardless of if there was an + // error or not + let res = try_main().await; + telemetry::shutdown(); + res +} + +async fn try_main() -> anyhow::Result<()> { // Load environment variables from .env files - if let Err(e) = dotenv::dotenv() { + // We keep the path to log it afterwards + let dotenv_path: Option = dotenv::dotenv() + .map(Some) // Display the error if it is something other than the .env file not existing - if !e.not_found() { - return Err(e).context("could not load .env file"); - } - } + .or_else(|e| if e.not_found() { Ok(None) } else { Err(e) })?; // Setup logging & tracing + let (tracer, _meter) = telemetry::setup()?; + let telemetry_layer = tracing_opentelemetry::layer().with_tracer(tracer); + + // This writes logs to stderr let fmt_layer = tracing_subscriber::fmt::layer().with_writer(std::io::stderr); let filter_layer = EnvFilter::try_from_default_env().or_else(|_| EnvFilter::try_new("info"))?; - let subscriber = Registry::default().with(filter_layer).with(fmt_layer); + let subscriber = Registry::default() + .with(telemetry_layer) + .with(filter_layer) + .with(fmt_layer); subscriber .try_init() .context("could not initialize logging")?; + // Now that logging is set up, we can log stuff, like if the .env file was + // loaded or not + if let Some(path) = dotenv_path { + tracing::info!(?path, "Loaded environment variables from file"); + } + // Parse the CLI arguments let opts = RootCommand::parse(); // And run the command - trace!(?opts, "Running command"); - opts.run().await + tracing::trace!(?opts, "Running command"); + opts.run().await?; + + Ok(()) } diff --git a/crates/cli/src/telemetry.rs b/crates/cli/src/telemetry.rs new file mode 100644 index 00000000..5e54381d --- /dev/null +++ b/crates/cli/src/telemetry.rs @@ -0,0 +1,88 @@ +// Copyright 2021 The Matrix.org Foundation C.I.C. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use std::time::Duration; + +use futures::stream::{Stream, StreamExt}; +use opentelemetry::{ + global, + sdk::{ + self, + metrics::{self, PushController}, + trace::{self, Tracer}, + Resource, + }, +}; +use opentelemetry_semantic_conventions as semcov; + +pub fn setup() -> anyhow::Result<(Tracer, PushController)> { + global::set_error_handler(|e| tracing::error!("{}", e))?; + + Ok((tracer()?, meter()?)) +} + +pub fn shutdown() { + global::shutdown_tracer_provider(); +} + +fn tracer() -> anyhow::Result { + let exporter = opentelemetry_otlp::new_exporter().tonic(); + + let tracer = opentelemetry_otlp::new_pipeline() + .tracing() + .with_exporter(exporter) + .with_trace_config(trace_config()) + .install_batch(opentelemetry::runtime::Tokio)?; + + Ok(tracer) +} + +fn interval(duration: Duration) -> impl Stream { + // Skip first immediate tick from tokio + opentelemetry::util::tokio_interval_stream(duration).skip(1) +} + +fn meter() -> anyhow::Result { + let exporter = opentelemetry_otlp::new_exporter().tonic(); + + let meter = opentelemetry_otlp::new_pipeline() + .metrics(tokio::spawn, interval) + .with_exporter(exporter) + .with_aggregator_selector(metrics::selectors::simple::Selector::Exact) + .build()?; + + Ok(meter) +} + +fn trace_config() -> trace::Config { + trace::config().with_resource(resource()) +} + +fn resource() -> Resource { + let resource = Resource::new(vec![ + semcov::resource::SERVICE_NAME.string(env!("CARGO_PKG_NAME")), + semcov::resource::SERVICE_VERSION.string(env!("CARGO_PKG_VERSION")), + ]); + + let detected = Resource::from_detectors( + Duration::from_secs(5), + vec![ + Box::new(sdk::resource::EnvResourceDetector::new()), + Box::new(sdk::resource::OsResourceDetector), + Box::new(sdk::resource::ProcessResourceDetector), + ], + ); + + resource.merge(&detected) +} diff --git a/crates/config/Cargo.toml b/crates/config/Cargo.toml index 77eb8f75..78a52f8d 100644 --- a/crates/config/Cargo.toml +++ b/crates/config/Cargo.toml @@ -7,10 +7,10 @@ license = "Apache-2.0" [dependencies] tokio = { version = "1.12.0", features = [] } -tracing = { version = "0.1.28", features = ["log"] } +tracing = { version = "0.1.29", features = ["log"] } async-trait = "0.1.51" -thiserror = "1.0.29" +thiserror = "1.0.30" anyhow = "1.0.44" schemars = { version = "0.8.6", features = ["url", "chrono"] } diff --git a/crates/config/src/database.rs b/crates/config/src/database.rs index ebb326d1..f37cfd00 100644 --- a/crates/config/src/database.rs +++ b/crates/config/src/database.rs @@ -176,7 +176,7 @@ pub struct DatabaseConfig { } impl DatabaseConfig { - #[tracing::instrument(err)] + #[tracing::instrument(err, skip_all)] pub async fn connect(&self) -> anyhow::Result { let mut options: PgConnectOptions = (&self.options) .try_into() diff --git a/crates/core/Cargo.toml b/crates/core/Cargo.toml index 605c3bfc..e0c61faa 100644 --- a/crates/core/Cargo.toml +++ b/crates/core/Cargo.toml @@ -13,10 +13,10 @@ tokio-stream = "0.1.7" futures-util = "0.3.17" # Logging and tracing -tracing = "0.1.28" +tracing = "0.1.29" # Error management -thiserror = "1.0.29" +thiserror = "1.0.30" anyhow = "1.0.44" # Web server diff --git a/crates/data-model/Cargo.toml b/crates/data-model/Cargo.toml index 75a2f866..4bb778f1 100644 --- a/crates/data-model/Cargo.toml +++ b/crates/data-model/Cargo.toml @@ -7,7 +7,7 @@ license = "Apache-2.0" [dependencies] chrono = "0.4.19" -thiserror = "1.0.29" +thiserror = "1.0.30" serde = "1.0.130" oauth2-types = { path = "../oauth2-types" } diff --git a/crates/oauth2-types/Cargo.toml b/crates/oauth2-types/Cargo.toml index f550b747..d9926189 100644 --- a/crates/oauth2-types/Cargo.toml +++ b/crates/oauth2-types/Cargo.toml @@ -18,7 +18,7 @@ sqlx = { version = "0.5.9", default-features = false, optional = true } chrono = "0.4.19" sha2 = "0.9.8" data-encoding = "2.3.2" -thiserror = "1.0.29" +thiserror = "1.0.30" itertools = "0.10.1" [features]