chore: update crates.io publish plan and fix dependencies

- Update CRATES_PUBLISH_PLAN.md with Level 0-2 completion status
- Fix binary-merkle-tree and related dependencies
- Add runtime_logger_tests.rs
- Update various Cargo.toml files
This commit is contained in:
2025-12-28 11:00:56 +03:00
parent 45322c4190
commit e43cc3d4fb
43 changed files with 514 additions and 454 deletions
+2 -5
View File
@@ -31,7 +31,6 @@ nohash-hasher = { optional = true, workspace = true }
parking_lot = { optional = true, workspace = true, default-features = true }
pezsp-core = { workspace = true }
pezsp-externalities = { workspace = true }
prometheus-endpoint = { optional = true, workspace = true, default-features = true }
rand = { optional = true, workspace = true, default-features = true }
scale-info = { features = ["derive"], workspace = true }
schnellru = { optional = true, workspace = true }
@@ -43,7 +42,7 @@ trie-root = { workspace = true }
[dev-dependencies]
array-bytes = { workspace = true, default-features = true }
criterion = { workspace = true, default-features = true }
pezsp-runtime = { workspace = true, default-features = true }
pezsp-core = { workspace = true, default-features = true }
trie-bench = { workspace = true }
trie-standardmap = { workspace = true }
@@ -59,8 +58,6 @@ std = [
"parking_lot",
"pezsp-core/std",
"pezsp-externalities/std",
"pezsp-runtime/std",
"prometheus-endpoint",
"rand",
"scale-info/std",
"schnellru",
@@ -69,4 +66,4 @@ std = [
"trie-db/std",
"trie-root/std",
]
runtime-benchmarks = ["pezsp-runtime/runtime-benchmarks"]
runtime-benchmarks = []
+2 -2
View File
@@ -21,11 +21,11 @@ criterion_main!(benches);
fn benchmark(c: &mut Criterion) {
trie_bench::standard_benchmark::<
pezsp_trie::LayoutV1<pezsp_runtime::traits::BlakeTwo256>,
pezsp_trie::LayoutV1<pezsp_core::Blake2Hasher>,
pezsp_trie::TrieStream,
>(c, "bizinikiwi-blake2");
trie_bench::standard_benchmark::<
pezsp_trie::LayoutV1<pezsp_runtime::traits::BlakeTwo256>,
pezsp_trie::LayoutV1<pezsp_core::KeccakHasher>,
pezsp_trie::TrieStream,
>(c, "bizinikiwi-keccak");
}
+43 -192
View File
@@ -17,212 +17,63 @@
//! Metrics for the trie cache.
use prometheus_endpoint::{
exponential_buckets,
prometheus::{core::Collector, HistogramTimer},
CounterVec, GaugeVec, HistogramOpts, HistogramVec, Opts, PrometheusError, Registry, U64,
};
#[cfg(feature = "std")]
pub use prometheus_impl::*;
// Register a metric with the given registry.
fn register<T: Clone + Collector + 'static>(
metric: T,
registry: &Registry,
) -> Result<T, PrometheusError> {
registry.register(Box::new(metric.clone()))?;
Ok(metric)
}
#[cfg(feature = "std")]
mod prometheus_impl {
use super::TrieHitStatsSnapshot;
/// Metrics for the trie cache.
/// This struct is used to track the performance of the trie cache.
/// It contains histograms and counters for the shared and local caches.
#[derive(Clone)]
pub struct Metrics {
// The duration in seconds to update the shared trie caches from local to shared cache.
shared_update_duration: HistogramVec,
// Number of attempts hitting the shared trie caches.
shared_hits: CounterVec<U64>,
// Number of attempts to the shared trie caches.
shared_fetch_attempts: CounterVec<U64>,
// Number of attempts hitting the local trie caches.
local_hits: CounterVec<U64>,
// Number of attempts to the local caches.
local_fetch_attempts: CounterVec<U64>,
// Length of the local caches.
local_cache_lengths: HistogramVec,
// The inline size of the shared caches.
shared_cache_inline_size: GaugeVec<U64>,
// The heap size of the shared caches.
shared_cache_heap_size: GaugeVec<U64>,
}
/// Metrics for the trie cache - stub implementation when prometheus is disabled.
#[derive(Clone)]
pub struct Metrics;
impl Metrics {
/// Create a new instance of the metrics.
pub(crate) fn register(registry: &Registry) -> Result<Self, PrometheusError> {
Ok(Self {
shared_update_duration: register(
HistogramVec::new(
HistogramOpts {
common_opts: Opts::new(
"trie_cache_shared_update_duration",
"Duration in seconds to update the shared trie caches from local cache to shared cache",
),
buckets: exponential_buckets(0.001, 4.0, 9)
.expect("function parameters are constant and always valid; qed"),
},
&["cache_type"], // node or value
)?,
registry,
)?,
shared_hits: register(
CounterVec::new(
Opts::new(
"trie_cache_shared_hits",
"Number of attempts hitting the shared trie cache",
),
&["cache_type"], // node or value
)?,
registry,
)?,
shared_fetch_attempts: register(
CounterVec::new(
Opts::new(
"trie_cache_shared_fetch_attempts",
"Number of attempts to the shared trie cache",
),
&["cache_type"],
)?,
registry,
)?,
local_hits: register(
CounterVec::new(
Opts::new(
"trie_cache_local_hits",
"Number of attempts hitting the local trie cache",
),
&["cache_type"],
)?,
registry,
)?,
local_fetch_attempts: register(
CounterVec::new(
Opts::new(
"trie_cache_local_fetch_attempts",
"Number of attempts to the local cache",
),
&["cache_type"],
)?,
registry,
)?,
local_cache_lengths: register(
HistogramVec::new(
HistogramOpts {
common_opts: Opts::new(
"trie_cache_local_cache_lengths",
"Histogram of length of the local cache",
),
buckets: exponential_buckets(1.0, 4.0, 9)
.expect("function parameters are constant and always valid; qed"),
},
&["cache_type"],
)?,
registry,
)?,
shared_cache_inline_size: register(
GaugeVec::new(
Opts::new(
"trie_cache_shared_cache_inline_size",
"The inline size of the shared caches",
),
&["cache_type"],
)?,
registry,
)?,
shared_cache_heap_size: register(
GaugeVec::new(
Opts::new(
"trie_cache_shared_cache_heap_size",
"The heap size of the shared caches",
),
&["cache_type"],
)?,
registry,
)?,
})
/// Stub registry type when prometheus is disabled.
pub struct Registry;
/// Stub timer type.
pub struct HistogramTimer;
impl Drop for HistogramTimer {
fn drop(&mut self) {}
}
/// Start a timer for the shared node cache update duration.
pub(crate) fn start_shared_node_update_timer(&self) -> HistogramTimer {
self.shared_update_duration.with_label_values(&["node"]).start_timer()
}
impl Metrics {
/// Create a new instance of the metrics.
pub(crate) fn register(_registry: &Registry) -> Result<Self, ()> {
Ok(Self)
}
/// Start a timer for the shared value cache update duration.
pub(crate) fn start_shared_value_update_timer(&self) -> HistogramTimer {
self.shared_update_duration.with_label_values(&["value"]).start_timer()
}
/// Start a timer for the shared node cache update duration.
pub(crate) fn start_shared_node_update_timer(&self) -> HistogramTimer {
HistogramTimer
}
/// Observe the shared node cache length.
pub(crate) fn observe_local_node_cache_length(&self, node_cache_len: usize) {
self.local_cache_lengths
.with_label_values(&["node"])
.observe(node_cache_len as f64);
}
/// Start a timer for the shared value cache update duration.
pub(crate) fn start_shared_value_update_timer(&self) -> HistogramTimer {
HistogramTimer
}
/// Observe the shared value cache length.
pub(crate) fn observe_local_value_cache_length(&self, value_cache_len: usize) {
self.local_cache_lengths
.with_label_values(&["value"])
.observe(value_cache_len as f64);
}
/// Observe the shared node cache length.
pub(crate) fn observe_local_node_cache_length(&self, _node_cache_len: usize) {}
/// Observe the shared node cache inline size.
pub(crate) fn observe_node_cache_inline_size(&self, cache_size: usize) {
self.shared_cache_inline_size
.with_label_values(&["node"])
.set(cache_size as u64);
}
/// Observe the shared value cache length.
pub(crate) fn observe_local_value_cache_length(&self, _value_cache_len: usize) {}
/// Observe the shared value cache inline size.
pub(crate) fn observe_value_cache_inline_size(&self, cache_size: usize) {
self.shared_cache_inline_size
.with_label_values(&["value"])
.set(cache_size as u64);
}
/// Observe the shared node cache inline size.
pub(crate) fn observe_node_cache_inline_size(&self, _cache_size: usize) {}
/// Observe the shared node cache heap size.
pub(crate) fn observe_node_cache_heap_size(&self, cache_size: usize) {
self.shared_cache_heap_size.with_label_values(&["node"]).set(cache_size as u64);
}
/// Observe the shared value cache inline size.
pub(crate) fn observe_value_cache_inline_size(&self, _cache_size: usize) {}
/// Observe the shared value cache heap size.
pub(crate) fn observe_value_cache_heap_size(&self, cache_size: usize) {
self.shared_cache_heap_size.with_label_values(&["value"]).set(cache_size as u64);
}
/// Observe the shared node cache heap size.
pub(crate) fn observe_node_cache_heap_size(&self, _cache_size: usize) {}
/// Observe the hit stats from an instance of a local cache.
pub(crate) fn observe_hits_stats(&self, stats: &TrieHitStatsSnapshot) {
self.shared_hits
.with_label_values(&["node"])
.inc_by(stats.node_cache.shared_hits);
self.shared_fetch_attempts
.with_label_values(&["node"])
.inc_by(stats.node_cache.shared_fetch_attempts);
self.local_hits.with_label_values(&["node"]).inc_by(stats.node_cache.local_hits);
self.local_fetch_attempts
.with_label_values(&["node"])
.inc_by(stats.node_cache.local_fetch_attempts);
/// Observe the shared value cache heap size.
pub(crate) fn observe_value_cache_heap_size(&self, _cache_size: usize) {}
self.shared_hits
.with_label_values(&["value"])
.inc_by(stats.value_cache.shared_hits);
self.shared_fetch_attempts
.with_label_values(&["value"])
.inc_by(stats.value_cache.shared_fetch_attempts);
self.local_hits
.with_label_values(&["value"])
.inc_by(stats.value_cache.local_hits);
self.local_fetch_attempts
.with_label_values(&["value"])
.inc_by(stats.value_cache.local_fetch_attempts);
/// Observe the hit stats from an instance of a local cache.
pub(crate) fn observe_hits_stats(&self, _stats: &TrieHitStatsSnapshot) {}
}
}
+1 -1
View File
@@ -26,7 +26,7 @@ use core::{hash::Hash, time::Duration};
use hash_db::Hasher;
use nohash_hasher::BuildNoHashHasher;
use parking_lot::{Mutex, RwLock, RwLockWriteGuard};
use prometheus_endpoint::Registry;
use super::metrics::Registry;
use schnellru::LruMap;
use std::{
collections::{hash_map::Entry as SetEntry, HashMap},