From c53c6560fae09c0e5ce3f2c32881c2e97a55b643 Mon Sep 17 00:00:00 2001 From: nym21 Date: Mon, 23 Mar 2026 14:17:07 +0100 Subject: [PATCH] global: fixes --- Cargo.lock | 6 ----- Cargo.toml | 4 ++-- crates/brk_bindgen/src/analysis/positions.rs | 2 +- crates/brk_cli/src/main.rs | 5 +++- .../per_block/computed/resolutions.rs | 21 ++++++++--------- crates/brk_server/src/api/server/mod.rs | 23 +++++++++++-------- crates/brk_server/src/extended/encoding.rs | 7 +++--- crates/brk_server/src/lib.rs | 1 - crates/brk_server/src/state.rs | 2 -- website/styles/chart.css | 2 +- website/styles/panes/chart.css | 4 ++-- 11 files changed, 38 insertions(+), 39 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ff9544a44..8baaceb19 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2545,8 +2545,6 @@ dependencies = [ [[package]] name = "rawdb" version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc7e70161aa9dbfcc1f858cae94eda70c9073bab5b22167bc6ab0f85d27054cf" dependencies = [ "libc", "log", @@ -3439,8 +3437,6 @@ checksum = "8f54a172d0620933a27a4360d3db3e2ae0dd6cceae9730751a036bbf182c4b23" [[package]] name = "vecdb" version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "417cdef9fd0ada1659e1499c7180b3b8edf5256b99eb846c7f960c10a755ea3c" dependencies = [ "itoa", "libc", @@ -3462,8 +3458,6 @@ dependencies = [ [[package]] name = "vecdb_derive" version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aba470bc1a709df1efaace5885b25e7685988c64b61ac379758d861d12312735" dependencies = [ "quote", "syn", diff --git a/Cargo.toml b/Cargo.toml index 017e4b717..7fa9a366f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -87,8 +87,8 @@ tower-http = { version = "0.6.8", features = ["catch-panic", "compression-br", " tower-layer = "0.3" tracing = { version = "0.1", default-features = false, features = ["std"] } ureq = { version = "3.3.0", features = ["json"] } -vecdb = { version = "0.7.1", features = ["derive", "serde_json", "pco", "schemars"] } -# vecdb = { path = "../anydb/crates/vecdb", features = ["derive", "serde_json", "pco", "schemars"] } +# vecdb = { version = "0.7.1", features = ["derive", "serde_json", "pco", "schemars"] } +vecdb = { path = "../anydb/crates/vecdb", features = ["derive", "serde_json", "pco", "schemars"] } [workspace.metadata.release] shared-version = true diff --git a/crates/brk_bindgen/src/analysis/positions.rs b/crates/brk_bindgen/src/analysis/positions.rs index 9477d069f..f74edde0f 100644 --- a/crates/brk_bindgen/src/analysis/positions.rs +++ b/crates/brk_bindgen/src/analysis/positions.rs @@ -894,7 +894,7 @@ mod tests { is_suffix_mode: true, has_outlier: true, }; let mode = determine_pattern_mode(&[normal, outlier], &fields); - assert!(mode.is_none(), "Pattern with outlier instance should be non-parameterizable"); + assert!(mode.is_some(), "Outlier should be filtered out, leaving a valid pattern from non-outlier instances"); } #[test] diff --git a/crates/brk_cli/src/main.rs b/crates/brk_cli/src/main.rs index de5c3524a..4c2cb5a26 100644 --- a/crates/brk_cli/src/main.rs +++ b/crates/brk_cli/src/main.rs @@ -3,7 +3,7 @@ use std::{ fs, thread::{self, sleep}, - time::Duration, + time::{Duration, Instant}, }; use brk_alloc::Mimalloc; @@ -99,6 +99,8 @@ pub fn main() -> anyhow::Result<()> { info!("{} blocks found.", u32::from(last_height) + 1); + let total_start = Instant::now(); + let starting_indexes = if cfg!(debug_assertions) { indexer.checked_index(&blocks, &client, &exit)? } else { @@ -109,6 +111,7 @@ pub fn main() -> anyhow::Result<()> { computer.compute(&indexer, starting_indexes, &reader, &exit)?; + info!("Total time: {:?}", total_start.elapsed()); info!("Waiting for new blocks..."); while last_height == client.get_last_height()? { diff --git a/crates/brk_computer/src/internal/per_block/computed/resolutions.rs b/crates/brk_computer/src/internal/per_block/computed/resolutions.rs index 57e8d6a1c..2073da5c8 100644 --- a/crates/brk_computer/src/internal/per_block/computed/resolutions.rs +++ b/crates/brk_computer/src/internal/per_block/computed/resolutions.rs @@ -8,7 +8,7 @@ use brk_types::{ use derive_more::{Deref, DerefMut}; use schemars::JsonSchema; use vecdb::{ - AggFold, Cursor, LazyAggVec, ReadOnlyClone, ReadableBoxedVec, ReadableVec, VecIndex, VecValue, + AggFold, LazyAggVec, ReadOnlyClone, ReadableBoxedVec, ReadableVec, VecIndex, VecValue, }; use crate::{ @@ -37,19 +37,18 @@ where from: usize, to: usize, init: B, - mut f: F, + f: F, ) -> Result { let mapping_len = mapping.len(); let source_len = source.len(); - let mut cursor = Cursor::new(source); - let mut acc = init; - for i in from..to.min(mapping_len) { - let target = S1I::max_from(I::from(i), source_len); - if let Some(v) = cursor.get(target) { - acc = f(acc, v)?; - } - } - Ok(acc) + + let indices: Vec = (from..to.min(mapping_len)) + .map(|i| S1I::max_from(I::from(i), source_len)) + .collect(); + + let values = source.read_sorted_at(&indices); + + values.into_iter().try_fold(init, f) } #[inline] diff --git a/crates/brk_server/src/api/server/mod.rs b/crates/brk_server/src/api/server/mod.rs index 6a2e58a67..8a2edfea3 100644 --- a/crates/brk_server/src/api/server/mod.rs +++ b/crates/brk_server/src/api/server/mod.rs @@ -22,17 +22,23 @@ impl ServerRoutes for ApiRouter { get_with( async |State(state): State| -> axum::Json { let uptime = state.started_instant.elapsed(); - let tip_height = state.client.get_last_height(); - let sync = state.sync(|q| { - let tip_height = tip_height.unwrap_or(q.indexed_height()); - q.sync_status(tip_height) - }); + let started_at = state.started_at.to_string(); + let sync = state + .run(move |q| { + let tip_height = q + .client() + .get_last_height() + .unwrap_or(q.indexed_height()); + Ok(q.sync_status(tip_height)) + }) + .await + .expect("health sync task panicked"); axum::Json(Health { status: Cow::Borrowed("healthy"), service: Cow::Borrowed("brk"), version: Cow::Borrowed(VERSION), timestamp: jiff::Timestamp::now().to_string(), - started_at: state.started_at.to_string(), + started_at, uptime_seconds: uptime.as_secs(), sync, }) @@ -70,11 +76,10 @@ impl ServerRoutes for ApiRouter { "/api/server/sync", get_with( async |uri: Uri, headers: HeaderMap, State(state): State| { - let tip_height = state.client.get_last_height(); - state .cached_json(&headers, CacheStrategy::Height, &uri, move |q| { - Ok(q.sync_status(tip_height?)) + let tip_height = q.client().get_last_height()?; + Ok(q.sync_status(tip_height)) }) .await }, diff --git a/crates/brk_server/src/extended/encoding.rs b/crates/brk_server/src/extended/encoding.rs index f269c6d43..548ee9fca 100644 --- a/crates/brk_server/src/extended/encoding.rs +++ b/crates/brk_server/src/extended/encoding.rs @@ -14,7 +14,8 @@ pub enum ContentEncoding { impl ContentEncoding { /// Negotiate the best encoding from the Accept-Encoding header. - /// Priority: br > zstd > gzip > identity. + /// Priority: zstd > br > gzip > identity. + /// zstd is preferred over brotli: ~3-5x faster compression at comparable ratios. pub fn negotiate(headers: &HeaderMap) -> Self { let accept = match headers.get(header::ACCEPT_ENCODING) { Some(v) => v, @@ -29,8 +30,8 @@ impl ContentEncoding { for part in s.split(',') { let name = part.split(';').next().unwrap_or("").trim(); match name { - "br" => return Self::Brotli, - "zstd" => best = Self::Zstd, + "zstd" => return Self::Zstd, + "br" => best = Self::Brotli, "gzip" if matches!(best, Self::Identity) => best = Self::Gzip, _ => {} } diff --git a/crates/brk_server/src/lib.rs b/crates/brk_server/src/lib.rs index 2310cfc85..45ed659b8 100644 --- a/crates/brk_server/src/lib.rs +++ b/crates/brk_server/src/lib.rs @@ -54,7 +54,6 @@ impl Server { pub fn new(query: &AsyncQuery, data_path: PathBuf, website: Website) -> Self { website.log(); Self(AppState { - client: query.client().clone(), query: query.clone(), data_path, website, diff --git a/crates/brk_server/src/state.rs b/crates/brk_server/src/state.rs index 72cf4738e..c08774948 100644 --- a/crates/brk_server/src/state.rs +++ b/crates/brk_server/src/state.rs @@ -12,7 +12,6 @@ use axum::{ http::{HeaderMap, HeaderValue, Response, Uri, header}, }; use brk_query::AsyncQuery; -use brk_rpc::Client; use jiff::Timestamp; use quick_cache::sync::{Cache, GuardResult}; use serde::Serialize; @@ -29,7 +28,6 @@ pub struct AppState { pub data_path: PathBuf, pub website: Website, pub cache: Arc>, - pub client: Client, pub started_at: Timestamp, pub started_instant: Instant, } diff --git a/website/styles/chart.css b/website/styles/chart.css index 9c81df9c6..01a4e6a89 100644 --- a/website/styles/chart.css +++ b/website/styles/chart.css @@ -243,7 +243,7 @@ button.capture { position: absolute; - top: -0.75rem; + bottom: 0.325rem; right: -0.75rem; z-index: 50; font-size: var(--font-size-xs); diff --git a/website/styles/panes/chart.css b/website/styles/panes/chart.css index 22e5ca29e..6aadc2805 100644 --- a/website/styles/panes/chart.css +++ b/website/styles/panes/chart.css @@ -43,8 +43,8 @@ display: flex; white-space: nowrap; overflow-x: auto; - padding-bottom: 1rem; - margin-bottom: -0.75rem; + padding-bottom: 0.25rem; + margin-bottom: -0.25rem; padding-left: var(--main-padding); margin-left: var(--negative-main-padding); padding-right: var(--main-padding);