mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-25 05:26:50 +00:00
fix(build): restore mimalloc workspace dependency
This commit is contained in:
Generated
+1
-21
@@ -9235,6 +9235,7 @@ dependencies = [
|
|||||||
"rustfs-log-analyzer",
|
"rustfs-log-analyzer",
|
||||||
"rustfs-madmin",
|
"rustfs-madmin",
|
||||||
"rustfs-mimalloc",
|
"rustfs-mimalloc",
|
||||||
|
"rustfs-mimalloc-sys",
|
||||||
"rustfs-notify",
|
"rustfs-notify",
|
||||||
"rustfs-object-capacity",
|
"rustfs-object-capacity",
|
||||||
"rustfs-object-data-cache",
|
"rustfs-object-data-cache",
|
||||||
@@ -9273,7 +9274,6 @@ dependencies = [
|
|||||||
"temp-env",
|
"temp-env",
|
||||||
"tempfile",
|
"tempfile",
|
||||||
"thiserror 2.0.20",
|
"thiserror 2.0.20",
|
||||||
"tikv-jemallocator",
|
|
||||||
"time",
|
"time",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tokio-rustls",
|
"tokio-rustls",
|
||||||
@@ -11999,26 +11999,6 @@ dependencies = [
|
|||||||
"cfg-if",
|
"cfg-if",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "tikv-jemalloc-sys"
|
|
||||||
version = "0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "cd8aa5b2ab86a2cefa406d889139c162cbb230092f7d1d7cbc1716405d852a3b"
|
|
||||||
dependencies = [
|
|
||||||
"cc",
|
|
||||||
"libc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "tikv-jemallocator"
|
|
||||||
version = "0.6.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "0359b4327f954e0567e69fb191cf1436617748813819c94b8cd4a431422d053a"
|
|
||||||
dependencies = [
|
|
||||||
"libc",
|
|
||||||
"tikv-jemalloc-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "time"
|
name = "time"
|
||||||
version = "0.3.55"
|
version = "0.3.55"
|
||||||
|
|||||||
@@ -210,6 +210,7 @@ sha1 = "0.11.0"
|
|||||||
sha2 = "0.11.0"
|
sha2 = "0.11.0"
|
||||||
subtle = "2.6"
|
subtle = "2.6"
|
||||||
zeroize = { version = "1.9.0" }
|
zeroize = { version = "1.9.0" }
|
||||||
|
proptest = "1"
|
||||||
|
|
||||||
# Time and Date
|
# Time and Date
|
||||||
chrono = { version = "0.4.45" }
|
chrono = { version = "0.4.45" }
|
||||||
@@ -352,6 +353,7 @@ dav-server = "0.11.0"
|
|||||||
|
|
||||||
# Performance Analysis and Memory Profiling
|
# Performance Analysis and Memory Profiling
|
||||||
rustfs-mimalloc = { version = "0.5.0" }
|
rustfs-mimalloc = { version = "0.5.0" }
|
||||||
|
rustfs-mimalloc-sys = { version = "0.5.0" }
|
||||||
hotpath = { version = "0.24.0", default-features = false }
|
hotpath = { version = "0.24.0", default-features = false }
|
||||||
# Snapshot testing for output format regression detection
|
# Snapshot testing for output format regression detection
|
||||||
insta = { version = "1.48" }
|
insta = { version = "1.48" }
|
||||||
|
|||||||
@@ -12,6 +12,8 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
|
#![recursion_limit = "256"]
|
||||||
|
|
||||||
mod error;
|
mod error;
|
||||||
pub mod heal;
|
pub mod heal;
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,8 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
|
#![recursion_limit = "256"]
|
||||||
|
|
||||||
//! HS-01 (rustfs/backlog#1865): MRF intent pipeline integration tests.
|
//! HS-01 (rustfs/backlog#1865): MRF intent pipeline integration tests.
|
||||||
//!
|
//!
|
||||||
//! Drives the real consumer loop (`spawn_mrf_consumer`) against a real
|
//! Drives the real consumer loop (`spawn_mrf_consumer`) against a real
|
||||||
|
|||||||
+3
-6
@@ -56,9 +56,6 @@ rio-v2 = ["rustfs-ecstore/rio-v2"]
|
|||||||
pyroscope = ["rustfs-obs/pyroscope"]
|
pyroscope = ["rustfs-obs/pyroscope"]
|
||||||
# Tokio runtime telemetry. Requires `--cfg tokio_unstable`; use `make build-profiling`.
|
# Tokio runtime telemetry. Requires `--cfg tokio_unstable`; use `make build-profiling`.
|
||||||
dial9 = ["rustfs-obs/dial9"]
|
dial9 = ["rustfs-obs/dial9"]
|
||||||
# Allocator features
|
|
||||||
mimalloc = ["dep:rustfs-mimalloc"]
|
|
||||||
jemalloc = ["dep:tikv-jemallocator"]
|
|
||||||
hotpath = [
|
hotpath = [
|
||||||
"hotpath/hotpath",
|
"hotpath/hotpath",
|
||||||
"hotpath/tokio",
|
"hotpath/tokio",
|
||||||
@@ -339,13 +336,13 @@ opentelemetry = { workspace = true }
|
|||||||
tracing-opentelemetry = { workspace = true }
|
tracing-opentelemetry = { workspace = true }
|
||||||
# Data structures
|
# Data structures
|
||||||
hashbrown = { workspace = true, features = ["serde", "rayon"] }
|
hashbrown = { workspace = true, features = ["serde", "rayon"] }
|
||||||
rustfs-mimalloc = { workspace = true, optional = true }
|
rustfs-mimalloc = { workspace = true }
|
||||||
|
|
||||||
[target.'cfg(target_os = "linux")'.dependencies]
|
[target.'cfg(target_os = "linux")'.dependencies]
|
||||||
libsystemd.workspace = true
|
libsystemd.workspace = true
|
||||||
|
|
||||||
[target.'cfg(not(target_os = "windows"))'.dependencies]
|
[target.'cfg(not(target_os = "windows"))'.dependencies]
|
||||||
tikv-jemallocator = { version = "0.6", optional = true }
|
rustfs-mimalloc-sys = { workspace = true }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
uuid = { workspace = true, features = ["v4", "v5", "fast-rng", "macro-diagnostics"] }
|
uuid = { workspace = true, features = ["v4", "v5", "fast-rng", "macro-diagnostics"] }
|
||||||
@@ -354,7 +351,7 @@ tempfile = { workspace = true }
|
|||||||
aws-config = { workspace = true }
|
aws-config = { workspace = true }
|
||||||
anyhow = { workspace = true }
|
anyhow = { workspace = true }
|
||||||
insta = { workspace = true, features = ["yaml", "json"] }
|
insta = { workspace = true, features = ["yaml", "json"] }
|
||||||
proptest = "1"
|
proptest = { workspace = true }
|
||||||
tokio = { workspace = true, features = ["test-util", "fs", "rt-multi-thread"] }
|
tokio = { workspace = true, features = ["test-util", "fs", "rt-multi-thread"] }
|
||||||
temp-env = { workspace = true, features = ["async_closure"] }
|
temp-env = { workspace = true, features = ["async_closure"] }
|
||||||
tracing-subscriber = { workspace = true, features = ["env-filter", "time"] }
|
tracing-subscriber = { workspace = true, features = ["env-filter", "time"] }
|
||||||
|
|||||||
@@ -169,25 +169,15 @@ impl AllocatorReclaimController {
|
|||||||
|
|
||||||
/// Return the allocator backend name used by reclaim and memory metrics.
|
/// Return the allocator backend name used by reclaim and memory metrics.
|
||||||
pub fn allocator_backend() -> &'static str {
|
pub fn allocator_backend() -> &'static str {
|
||||||
#[cfg(all(feature = "mimalloc", not(target_os = "windows")))]
|
#[cfg(not(target_os = "windows"))]
|
||||||
{
|
{
|
||||||
"mimalloc"
|
"mimalloc"
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(all(feature = "mimalloc", target_os = "windows"))]
|
#[cfg(target_os = "windows")]
|
||||||
{
|
{
|
||||||
"mimalloc-windows"
|
"mimalloc-windows"
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(all(not(feature = "mimalloc"), feature = "jemalloc"))]
|
|
||||||
{
|
|
||||||
"jemalloc"
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(not(any(feature = "mimalloc", feature = "jemalloc")))]
|
|
||||||
{
|
|
||||||
"system"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn active_requests() -> u64 {
|
fn active_requests() -> u64 {
|
||||||
@@ -378,13 +368,13 @@ pub fn allocator_reclaim_controller_snapshot(ctx: &CancellationToken) -> Allocat
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(all(feature = "mimalloc", not(target_os = "windows")))]
|
#[cfg(not(target_os = "windows"))]
|
||||||
fn collect_allocator_memory(force: bool) -> Result<(), String> {
|
fn collect_allocator_memory(force: bool) -> Result<(), String> {
|
||||||
rustfs_mimalloc::MiMalloc::collect(force);
|
rustfs_mimalloc::MiMalloc::collect(force);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(not(all(feature = "mimalloc", not(target_os = "windows"))))]
|
#[cfg(target_os = "windows")]
|
||||||
fn collect_allocator_memory(_force: bool) -> Result<(), String> {
|
fn collect_allocator_memory(_force: bool) -> Result<(), String> {
|
||||||
Err("allocator reclaim requires mimalloc on a non-Windows target".to_string())
|
Err("allocator reclaim requires mimalloc on a non-Windows target".to_string())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,11 +52,6 @@
|
|||||||
//! tests where you start one server in a background task, run all your
|
//! tests where you start one server in a background task, run all your
|
||||||
//! tests, and then shut it down.
|
//! tests, and then shut it down.
|
||||||
|
|
||||||
#[cfg(all(feature = "mimalloc", feature = "jemalloc"))]
|
|
||||||
compile_error!("allocator features 'mimalloc' and 'jemalloc' are mutually exclusive");
|
|
||||||
#[cfg(all(feature = "jemalloc", target_os = "windows"))]
|
|
||||||
compile_error!("allocator feature 'jemalloc' is not supported on Windows");
|
|
||||||
|
|
||||||
/// Scope-based hotpath measurement for `#[async_trait]` methods, where
|
/// Scope-based hotpath measurement for `#[async_trait]` methods, where
|
||||||
/// `#[hotpath::measure]` would only time the boxed-future construction.
|
/// `#[hotpath::measure]` would only time the boxed-future construction.
|
||||||
/// The guard records wall time from this statement until the enclosing
|
/// The guard records wall time from this statement until the enclosing
|
||||||
|
|||||||
+7
-62
@@ -12,29 +12,14 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
#[cfg(all(
|
#[cfg(all(feature = "hotpath", feature = "hotpath-alloc", not(target_os = "windows")))]
|
||||||
feature = "hotpath",
|
|
||||||
feature = "hotpath-alloc",
|
|
||||||
feature = "mimalloc",
|
|
||||||
not(feature = "jemalloc")
|
|
||||||
))]
|
|
||||||
use std::alloc::{GlobalAlloc, Layout};
|
use std::alloc::{GlobalAlloc, Layout};
|
||||||
|
|
||||||
#[cfg(all(
|
#[cfg(all(feature = "hotpath", feature = "hotpath-alloc", not(target_os = "windows")))]
|
||||||
feature = "hotpath",
|
|
||||||
feature = "hotpath-alloc",
|
|
||||||
feature = "mimalloc",
|
|
||||||
not(feature = "jemalloc")
|
|
||||||
))]
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
struct MiMallocAllocator;
|
struct MiMallocAllocator;
|
||||||
|
|
||||||
#[cfg(all(
|
#[cfg(all(feature = "hotpath", feature = "hotpath-alloc", not(target_os = "windows")))]
|
||||||
feature = "hotpath",
|
|
||||||
feature = "hotpath-alloc",
|
|
||||||
feature = "mimalloc",
|
|
||||||
not(feature = "jemalloc")
|
|
||||||
))]
|
|
||||||
// SAFETY: allocation operations are forwarded unchanged to MiMalloc, so
|
// SAFETY: allocation operations are forwarded unchanged to MiMalloc, so
|
||||||
// MiMalloc's GlobalAlloc guarantees apply to every returned pointer and layout.
|
// MiMalloc's GlobalAlloc guarantees apply to every returned pointer and layout.
|
||||||
#[allow(unsafe_code)]
|
#[allow(unsafe_code)]
|
||||||
@@ -60,65 +45,25 @@ unsafe impl GlobalAlloc for MiMallocAllocator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(all(
|
#[cfg(all(feature = "hotpath", feature = "hotpath-alloc", not(target_os = "windows")))]
|
||||||
feature = "hotpath",
|
|
||||||
feature = "hotpath-alloc",
|
|
||||||
feature = "mimalloc",
|
|
||||||
not(feature = "jemalloc")
|
|
||||||
))]
|
|
||||||
#[global_allocator]
|
#[global_allocator]
|
||||||
static GLOBAL: hotpath::CountingAllocator<MiMallocAllocator> = hotpath::CountingAllocator::with(MiMallocAllocator);
|
static GLOBAL: hotpath::CountingAllocator<MiMallocAllocator> = hotpath::CountingAllocator::with(MiMallocAllocator);
|
||||||
|
|
||||||
#[cfg(all(
|
#[cfg(all(feature = "hotpath", feature = "hotpath-alloc", target_os = "windows"))]
|
||||||
feature = "hotpath",
|
|
||||||
feature = "hotpath-alloc",
|
|
||||||
feature = "jemalloc",
|
|
||||||
not(feature = "mimalloc"),
|
|
||||||
not(target_os = "windows")
|
|
||||||
))]
|
|
||||||
#[global_allocator]
|
|
||||||
static GLOBAL: hotpath::CountingAllocator<tikv_jemallocator::Jemalloc> =
|
|
||||||
hotpath::CountingAllocator::with(tikv_jemallocator::Jemalloc);
|
|
||||||
|
|
||||||
#[cfg(all(
|
|
||||||
feature = "hotpath",
|
|
||||||
feature = "hotpath-alloc",
|
|
||||||
not(any(feature = "mimalloc", feature = "jemalloc"))
|
|
||||||
))]
|
|
||||||
#[global_allocator]
|
#[global_allocator]
|
||||||
static GLOBAL: hotpath::CountingAllocator<std::alloc::System> = hotpath::CountingAllocator::with(std::alloc::System);
|
static GLOBAL: hotpath::CountingAllocator<std::alloc::System> = hotpath::CountingAllocator::with(std::alloc::System);
|
||||||
|
|
||||||
#[cfg(all(
|
#[cfg(all(not(all(feature = "hotpath", feature = "hotpath-alloc")), not(target_os = "windows")))]
|
||||||
not(all(feature = "hotpath", feature = "hotpath-alloc")),
|
|
||||||
feature = "mimalloc",
|
|
||||||
not(feature = "jemalloc")
|
|
||||||
))]
|
|
||||||
#[global_allocator]
|
#[global_allocator]
|
||||||
static GLOBAL: rustfs_mimalloc::MiMalloc = rustfs_mimalloc::MiMalloc;
|
static GLOBAL: rustfs_mimalloc::MiMalloc = rustfs_mimalloc::MiMalloc;
|
||||||
|
|
||||||
#[cfg(all(
|
|
||||||
not(all(feature = "hotpath", feature = "hotpath-alloc")),
|
|
||||||
feature = "jemalloc",
|
|
||||||
not(feature = "mimalloc"),
|
|
||||||
not(target_os = "windows")
|
|
||||||
))]
|
|
||||||
#[global_allocator]
|
|
||||||
static GLOBAL: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc;
|
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let _hotpath_guard = hotpath::HotpathGuardBuilder::new("main").build();
|
let _hotpath_guard = hotpath::HotpathGuardBuilder::new("main").build();
|
||||||
|
|
||||||
rustfs::startup_entrypoint::run_process();
|
rustfs::startup_entrypoint::run_process();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(all(
|
#[cfg(all(test, feature = "hotpath", feature = "hotpath-alloc", not(target_os = "windows")))]
|
||||||
test,
|
|
||||||
feature = "hotpath",
|
|
||||||
feature = "hotpath-alloc",
|
|
||||||
feature = "mimalloc",
|
|
||||||
not(feature = "jemalloc"),
|
|
||||||
not(target_os = "windows")
|
|
||||||
))]
|
|
||||||
mod tests {
|
mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
// SAFETY: This test inspects a live allocation pointer with mimalloc's heap
|
// SAFETY: This test inspects a live allocation pointer with mimalloc's heap
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ use rustfs_io_metrics::{
|
|||||||
record_cpu_usage, record_memory_usage, record_process_memory_split,
|
record_cpu_usage, record_memory_usage, record_process_memory_split,
|
||||||
};
|
};
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
#[cfg(any(feature = "mimalloc", test))]
|
#[cfg(any(not(target_os = "windows"), test))]
|
||||||
use serde_json::Value;
|
use serde_json::Value;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::sync::{Arc, Mutex, OnceLock};
|
use std::sync::{Arc, Mutex, OnceLock};
|
||||||
@@ -229,7 +229,7 @@ fn read_cgroup_memory_snapshot() -> Option<CgroupMemorySnapshot> {
|
|||||||
read_cgroup_v2().or_else(read_cgroup_v1)
|
read_cgroup_v2().or_else(read_cgroup_v1)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "mimalloc")]
|
#[cfg(not(target_os = "windows"))]
|
||||||
fn read_allocator_memory_snapshot() -> Option<AllocatorMemorySnapshot> {
|
fn read_allocator_memory_snapshot() -> Option<AllocatorMemorySnapshot> {
|
||||||
let json = rustfs_mimalloc::MiMalloc::stats_json();
|
let json = rustfs_mimalloc::MiMalloc::stats_json();
|
||||||
if json.is_empty() {
|
if json.is_empty() {
|
||||||
@@ -242,12 +242,12 @@ fn read_allocator_memory_snapshot() -> Option<AllocatorMemorySnapshot> {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(not(feature = "mimalloc"))]
|
#[cfg(target_os = "windows")]
|
||||||
fn read_allocator_memory_snapshot() -> Option<AllocatorMemorySnapshot> {
|
fn read_allocator_memory_snapshot() -> Option<AllocatorMemorySnapshot> {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(feature = "mimalloc", test))]
|
#[cfg(any(not(target_os = "windows"), test))]
|
||||||
fn numeric_json_value(value: &Value) -> Option<u64> {
|
fn numeric_json_value(value: &Value) -> Option<u64> {
|
||||||
match value {
|
match value {
|
||||||
Value::Number(number) => number
|
Value::Number(number) => number
|
||||||
@@ -258,7 +258,7 @@ fn numeric_json_value(value: &Value) -> Option<u64> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(feature = "mimalloc", test))]
|
#[cfg(any(not(target_os = "windows"), test))]
|
||||||
fn numeric_json_field(value: &Value, field: &str) -> Option<u64> {
|
fn numeric_json_field(value: &Value, field: &str) -> Option<u64> {
|
||||||
match value {
|
match value {
|
||||||
Value::Object(fields) => fields
|
Value::Object(fields) => fields
|
||||||
@@ -270,7 +270,7 @@ fn numeric_json_field(value: &Value, field: &str) -> Option<u64> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(feature = "mimalloc", test))]
|
#[cfg(any(not(target_os = "windows"), test))]
|
||||||
fn mimalloc_stat_field(value: &Value, metric: &str, field: &str) -> Option<u64> {
|
fn mimalloc_stat_field(value: &Value, metric: &str, field: &str) -> Option<u64> {
|
||||||
match value {
|
match value {
|
||||||
Value::Object(fields) => {
|
Value::Object(fields) => {
|
||||||
@@ -287,12 +287,12 @@ fn mimalloc_stat_field(value: &Value, metric: &str, field: &str) -> Option<u64>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(feature = "mimalloc", test))]
|
#[cfg(any(not(target_os = "windows"), test))]
|
||||||
fn mimalloc_stat_current(value: &Value, metric: &str) -> Option<u64> {
|
fn mimalloc_stat_current(value: &Value, metric: &str) -> Option<u64> {
|
||||||
mimalloc_stat_field(value, metric, "current")
|
mimalloc_stat_field(value, metric, "current")
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(feature = "mimalloc", test))]
|
#[cfg(any(not(target_os = "windows"), test))]
|
||||||
fn mimalloc_stat_sum(value: &Value, metrics: &[&str], field: &str) -> Option<u64> {
|
fn mimalloc_stat_sum(value: &Value, metrics: &[&str], field: &str) -> Option<u64> {
|
||||||
metrics
|
metrics
|
||||||
.iter()
|
.iter()
|
||||||
@@ -301,7 +301,7 @@ fn mimalloc_stat_sum(value: &Value, metrics: &[&str], field: &str) -> Option<u64
|
|||||||
.filter(|value| *value > 0)
|
.filter(|value| *value > 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(feature = "mimalloc", test))]
|
#[cfg(any(not(target_os = "windows"), test))]
|
||||||
fn parse_mimalloc_stats_json(stats_json: &str) -> Option<AllocatorMemoryObservation> {
|
fn parse_mimalloc_stats_json(stats_json: &str) -> Option<AllocatorMemoryObservation> {
|
||||||
let value = serde_json::from_str::<Value>(stats_json).ok()?;
|
let value = serde_json::from_str::<Value>(stats_json).ok()?;
|
||||||
let malloc_metrics = ["malloc_normal", "malloc_huge"];
|
let malloc_metrics = ["malloc_normal", "malloc_huge"];
|
||||||
@@ -558,9 +558,9 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn read_allocator_memory_snapshot_uses_mimalloc_stats_json() {
|
fn read_allocator_memory_snapshot_uses_mimalloc_stats_json() {
|
||||||
let snapshot = super::read_allocator_memory_snapshot();
|
let snapshot = super::read_allocator_memory_snapshot();
|
||||||
#[cfg(all(feature = "mimalloc", not(target_os = "windows")))]
|
#[cfg(not(target_os = "windows"))]
|
||||||
assert!(snapshot.is_some(), "allocator snapshot should be available on non-Windows");
|
assert!(snapshot.is_some(), "allocator snapshot should be available on non-Windows");
|
||||||
#[cfg(not(feature = "mimalloc"))]
|
#[cfg(target_os = "windows")]
|
||||||
assert!(snapshot.is_none(), "allocator snapshot should be absent without mimalloc");
|
assert!(snapshot.is_none(), "allocator snapshot should be absent without mimalloc");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user