From 082a82eece6e07d3002d14727f4d67973284b376 Mon Sep 17 00:00:00 2001 From: Nitish Tiwari Date: Mon, 8 May 2023 12:25:53 +0530 Subject: [PATCH 1/3] Update vergen to 8.1 and clean up version print mechanism --- Cargo.lock | 166 +++++++++++++++----------------------------- server/Cargo.toml | 4 +- server/build.rs | 24 +++---- server/src/about.rs | 77 +++++--------------- 4 files changed, 90 insertions(+), 181 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d913827d8..14d7cf78e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -202,7 +202,7 @@ dependencies = [ "serde_urlencoded", "smallvec", "socket2", - "time 0.3.17", + "time 0.3.21", "url", ] @@ -334,9 +334,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.69" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224afbd727c3d6e4b90103ece64b8d1b67fbb1973b1046c2281eed3f3803f800" +checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" dependencies = [ "backtrace", ] @@ -611,6 +611,28 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "autometrics" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e06501aa216e24523c637bad8498c211e7a932ed4002ad0f62a2834fa5b3c400" +dependencies = [ + "autometrics-macros", + "opentelemetry_api", +] + +[[package]] +name = "autometrics-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2edb1335006ff621fe85b2c876f8e77ce31779fce866867b99a300891133aed9" +dependencies = [ + "percent-encoding", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "aws-config" version = "0.54.1" @@ -633,7 +655,7 @@ dependencies = [ "http", "hyper", "ring", - "time 0.3.17", + "time 0.3.21", "tokio", "tower", "tracing", @@ -765,7 +787,7 @@ dependencies = [ "percent-encoding", "regex", "sha2", - "time 0.3.17", + "time 0.3.21", "tracing", ] @@ -869,7 +891,7 @@ dependencies = [ "itoa 1.0.5", "num-integer", "ryu", - "time 0.3.17", + "time 0.3.21", ] [[package]] @@ -1290,7 +1312,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" dependencies = [ "percent-encoding", - "time 0.3.17", + "time 0.3.21", "version_check", ] @@ -1723,26 +1745,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "enum-iterator" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea166b3f7dc1032f7866d13f8d8e02c8d87507b61750176b86554964dc6a7bf" -dependencies = [ - "enum-iterator-derive", -] - -[[package]] -name = "enum-iterator-derive" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "828de45d0ca18782232dfb8f3ea9cc428e8ced380eb26a520baaacfc70de39ce" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "env_logger" version = "0.10.0" @@ -1991,37 +1993,12 @@ dependencies = [ "wasi 0.11.0+wasi-snapshot-preview1", ] -[[package]] -name = "getset" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e45727250e75cc04ff2846a66397da8ef2b3db8e40e0cef4df67950a07621eb9" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "gimli" version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "221996f774192f0f718773def8201c4ae31f02616a54ccfc2d358bb0e5cefdec" -[[package]] -name = "git2" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf7f68c2995f392c49fffb4f95ae2c873297830eb25c6bc4c114ce8f4562acc" -dependencies = [ - "bitflags", - "libc", - "libgit2-sys", - "log", - "url", -] - [[package]] name = "glob" version = "0.3.1" @@ -2438,36 +2415,12 @@ version = "0.2.139" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" -[[package]] -name = "libgit2-sys" -version = "0.14.2+1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f3d95f6b51075fe9810a7ae22c7095f12b98005ab364d8544797a825ce946a4" -dependencies = [ - "cc", - "libc", - "libz-sys", - "pkg-config", -] - [[package]] name = "libm" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" -[[package]] -name = "libz-sys" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - [[package]] name = "link-cplusplus" version = "1.0.8" @@ -2876,6 +2829,21 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "opentelemetry_api" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c24f96e21e7acc813c7a8394ee94978929db2bcc46cf6b5014fc612bf7760c22" +dependencies = [ + "fnv", + "futures-channel", + "futures-util", + "indexmap", + "js-sys", + "once_cell", + "thiserror", +] + [[package]] name = "ordered-float" version = "2.10.0" @@ -2983,6 +2951,7 @@ dependencies = [ "arrow-json", "arrow-schema", "async-trait", + "autometrics", "base64 0.21.0", "bytes", "bzip2", @@ -3023,7 +2992,7 @@ dependencies = [ "serde_json", "sha1_smol", "static-files", - "sysinfo 0.28.4", + "sysinfo", "thiserror", "thread-priority", "tokio", @@ -3571,9 +3540,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70" +checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" [[package]] name = "ryu" @@ -3949,20 +3918,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "sysinfo" -version = "0.27.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "975fe381e0ecba475d4acff52466906d95b153a40324956552e027b2a9eaa89e" -dependencies = [ - "cfg-if", - "core-foundation-sys", - "libc", - "ntapi", - "once_cell", - "winapi", -] - [[package]] name = "sysinfo" version = "0.28.4" @@ -4062,9 +4017,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.17" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" +checksum = "8f3403384eaacbca9923fa06940178ac13e4edb725486d70e8e15881d0c836cc" dependencies = [ "itoa 1.0.5", "serde", @@ -4074,15 +4029,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" +checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" [[package]] name = "time-macros" -version = "0.2.6" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b" dependencies = [ "time-core", ] @@ -4423,20 +4378,13 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "vergen" -version = "7.5.1" +version = "8.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21b881cd6636ece9735721cf03c1fe1e774fe258683d084bb2812ab67435749" +checksum = "6e03272e388fb78fc79481a493424f78d77be1d55f21bcd314b5a6716e195afe" dependencies = [ "anyhow", - "cfg-if", - "enum-iterator", - "getset", - "git2", - "rustc_version", "rustversion", - "sysinfo 0.27.7", - "thiserror", - "time 0.3.17", + "time 0.3.21", ] [[package]] diff --git a/server/Cargo.toml b/server/Cargo.toml index 7b8d5a1a3..569cda3d4 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -5,8 +5,10 @@ authors = ["Parseable Team "] edition = "2021" rust-version = "1.67" categories = ["logging", "observability", "log analytics"] +build = "build.rs" [dependencies] +autometrics = "0.4.1" actix-web-httpauth = "0.8" actix-web = { version = "4.3", features = ["rustls"] } actix-cors = "0.6" @@ -81,7 +83,7 @@ static-files = "0.2" cargo_toml = "0.15" ureq = "2.6" sha1_smol = { version = "1.0", features = ["std"] } -vergen = { version = "7.5", features = ["build", "git", "cargo"] } +vergen = { version = "8.1", features = ["build", "git", "cargo", "gitcl"] } zip = { version = "0.6", default_features = false, features = ["deflate"] } [dev-dependencies] diff --git a/server/build.rs b/server/build.rs index 0e98aaec1..9abb3ca74 100644 --- a/server/build.rs +++ b/server/build.rs @@ -16,22 +16,20 @@ * */ -use vergen::{vergen, Config, ShaKind}; +use vergen::EmitBuilder; +use std::error::Error; -fn main() { - // Init vergen - let mut config = Config::default(); - *config.git_mut().sha_kind_mut() = ShaKind::Short; +fn main() -> Result<(), Box> { + ui::setup().unwrap(); - if let Err(e) = vergen(config) { - println!("cargo:warning=initializing vergen failed due to error: {e}",); - } + // Init vergen + EmitBuilder::builder() + .all_build() + .all_cargo() + .git_sha(true) + .emit()?; - println!("cargo:rerun-if-changed=build.rs"); - println!("cargo:rerun-if-changed=Cargo.toml"); - println!("cargo:rerun-if-env-changed=LOCAL_ASSETS_PATH"); - println!("Build File running"); - ui::setup().unwrap() + Ok(()) } mod ui { diff --git a/server/src/about.rs b/server/src/about.rs index 8aef50edd..60767fafd 100644 --- a/server/src/about.rs +++ b/server/src/about.rs @@ -21,7 +21,7 @@ use chrono::Duration; use chrono_humanize::{Accuracy, Tense}; use crossterm::style::Stylize; use std::path::Path; -use std::{env, fmt}; +use std::env; use sysinfo::SystemExt; use ulid::Ulid; @@ -31,10 +31,6 @@ use crate::storage::StorageMetadata; use crate::utils::update; static K8S_ENV_TO_CHECK: &str = "KUBERNETES_SERVICE_HOST"; -pub enum ParseableVersion { - Version(semver::Version), - Prerelease(semver::Prerelease), -} fn is_docker() -> bool { Path::new("/.dockerenv").exists() @@ -72,29 +68,20 @@ pub fn user_agent(uid: &Ulid) -> String { ) } -pub struct Version { - pub released_version: ParseableVersion, +pub struct ParseableVersion { + pub released_version: semver::Version, pub commit_hash: String, } -impl Version { - pub fn new(version: ParseableVersion, commit_hash: String) -> Self { - Version { +impl ParseableVersion { + pub fn new(version: semver::Version, commit_hash: String) -> Self { + ParseableVersion { released_version: version, commit_hash, } } } -impl fmt::Display for ParseableVersion { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - match self { - ParseableVersion::Version(v) => write!(f, "{v}"), - ParseableVersion::Prerelease(p) => write!(f, "{p}"), - } - } -} - pub fn print_about( current_version: semver::Version, latest_release: Option, @@ -140,47 +127,21 @@ pub async fn print(config: &Config, meta: &StorageMetadata) { None }; - match current.released_version { - ParseableVersion::Version(current_version) => { - print_about(current_version, latest_release, current.commit_hash); - } - ParseableVersion::Prerelease(current_prerelease) => { - eprintln!( - " -{} {} ", - "Current Version:".to_string().blue().bold(), - current_prerelease - ); - } - } + print_about(current.released_version, latest_release, current.commit_hash); } -pub fn current() -> Version { - let build_semver = env!("VERGEN_BUILD_SEMVER"); - let sha_hash = env!("VERGEN_GIT_SHA_SHORT"); - let mut git_semver = env!("VERGEN_GIT_SEMVER"); - - if &git_semver[..1] == "v" { - git_semver = &git_semver[1..]; - } - - if build_semver == git_semver { - Version::new( - ParseableVersion::Version( - semver::Version::parse(build_semver) - .expect("VERGEN_BUILD_SEMVER is always valid semver"), - ), - sha_hash.to_string(), - ) - } else { - Version::new( - ParseableVersion::Prerelease( - semver::Prerelease::new(git_semver) - .expect("VERGEN_GIT_SEMVER is always valid semver"), - ), - sha_hash.to_string(), - ) - } +pub fn current() -> ParseableVersion { + // CARGO_PKG_VERSION is set from Cargol.toml file at build time + // We need to ensure [package].version in Cargo.toml is always valid semver + let build_semver = env!("CARGO_PKG_VERSION"); + // VERGEN_GIT_SHA is set from build.rs at build time + let sha_hash = env!("VERGEN_GIT_SHA"); + + ParseableVersion::new( + semver::Version::parse(build_semver) + .expect("CARGO_PKG_VERSION is always valid semver"), + sha_hash.to_string(), + ) } fn humanize_time(time_passed: Duration) -> String { From c95d8869e375fdab1ec9bb2a92ba2fe436b3e96b Mon Sep 17 00:00:00 2001 From: Nitish Tiwari Date: Mon, 8 May 2023 12:28:34 +0530 Subject: [PATCH 2/3] fix fmt --- server/build.rs | 2 +- server/src/about.rs | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/server/build.rs b/server/build.rs index 9abb3ca74..9ce686c15 100644 --- a/server/build.rs +++ b/server/build.rs @@ -16,8 +16,8 @@ * */ -use vergen::EmitBuilder; use std::error::Error; +use vergen::EmitBuilder; fn main() -> Result<(), Box> { ui::setup().unwrap(); diff --git a/server/src/about.rs b/server/src/about.rs index 60767fafd..c696a9c18 100644 --- a/server/src/about.rs +++ b/server/src/about.rs @@ -20,8 +20,8 @@ use chrono::Duration; use chrono_humanize::{Accuracy, Tense}; use crossterm::style::Stylize; -use std::path::Path; use std::env; +use std::path::Path; use sysinfo::SystemExt; use ulid::Ulid; @@ -127,7 +127,11 @@ pub async fn print(config: &Config, meta: &StorageMetadata) { None }; - print_about(current.released_version, latest_release, current.commit_hash); + print_about( + current.released_version, + latest_release, + current.commit_hash, + ); } pub fn current() -> ParseableVersion { @@ -138,8 +142,7 @@ pub fn current() -> ParseableVersion { let sha_hash = env!("VERGEN_GIT_SHA"); ParseableVersion::new( - semver::Version::parse(build_semver) - .expect("CARGO_PKG_VERSION is always valid semver"), + semver::Version::parse(build_semver).expect("CARGO_PKG_VERSION is always valid semver"), sha_hash.to_string(), ) } From b3b1e11a9c6299e88cd375ed7db1213d9d31d4d2 Mon Sep 17 00:00:00 2001 From: Nitish Tiwari Date: Mon, 8 May 2023 12:30:06 +0530 Subject: [PATCH 3/3] fix clippy --- server/src/utils/json/flatten.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/src/utils/json/flatten.rs b/server/src/utils/json/flatten.rs index 77fba0b5b..190831dd5 100644 --- a/server/src/utils/json/flatten.rs +++ b/server/src/utils/json/flatten.rs @@ -65,7 +65,7 @@ pub fn flatten_object( for (key, value) in nested_dict.into_iter() { let new_key = parent_key.map_or_else( || key.clone(), - |parent_key| format!("{}{}{}", parent_key, separator, key), + |parent_key| format!("{parent_key}{separator}{key}"), ); match value { Value::Object(obj) => flatten_object(map, Some(&new_key), obj, separator)?, @@ -139,7 +139,7 @@ pub fn flatten_array_objects( } for (key, arr) in columns { - let new_key = format!("{}{}{}", parent_key, separator, key); + let new_key = format!("{parent_key}{separator}{key}"); map.insert(new_key, Value::Array(arr)); }