v0.30.0
This commit is contained in:
1 parent
1431dd47f0
commit
f3dd34dae4
42 files changed
+950
-133
No files matched your search
@@ -144,6 +144,39 @@ require(
|
||||
"Compression::new(service)",
|
||||
)
|
||||
|
||||
# One JSONL buffer is reused across local file and Logstash sends (Loki-only
|
||||
# sinks should not allocate the JSONL line). Both output queues remain bounded.
|
||||
logging_sink = read("src/logging/runtime.rs")
|
||||
assert logging_sink.count("serde_json::to_vec(&payload)") == 1
|
||||
assert "if config.file.enabled || config.logstash.enabled" in logging_sink
|
||||
assert "opened.write_all(&jsonl_line)" in logging_sink
|
||||
assert "state.stream.write_all(&jsonl_line)" in logging_sink
|
||||
assert "PER_VHOST_OPEN_FILES: usize = 64" in logging_sink
|
||||
|
||||
# Stored Logs file discovery must also be cardinality bounded before sort:
|
||||
# rotated files and per-vhost directories may contain arbitrary historical files.
|
||||
require("src/admin/file_logs.rs", "newest_log_files(std::fs::read_dir(&directory)", ", 256);")
|
||||
require("src/admin/file_logs_io.rs", "BinaryHeap::with_capacity(limit)", "newest_log_files(std::fs::read_dir(parent)", "), 64);")
|
||||
|
||||
# A per-key invalidation generation is useful only inside the current PURGE
|
||||
# publication epoch; retaining each purged URL after eviction is an unbounded
|
||||
# lifetime-memory leak on high-cardinality cache invalidation workloads.
|
||||
invalidation = read("src/cache/invalidation/invalidate.rs")
|
||||
start = invalidation.index("InvalidationOperation::Purge =>")
|
||||
barrier = invalidation.index("store.generation = store.generation.wrapping_add(1);", start)
|
||||
reset = invalidation.index("store.key_generations.clear();", barrier)
|
||||
assert "store.key_generations.capacity() > 256" in invalidation[barrier:reset]
|
||||
matcher = invalidation.index("let affected = self.purge_matcher(&matcher);", reset)
|
||||
assert start < barrier < reset < matcher
|
||||
require("src/cache/tests/v022_cache_tests/part_02.rs", "many_distinct_selective_purges_do_not_retain_tombstones_forever")
|
||||
|
||||
# Repeated hot-path analytics labels should use borrowed lookups instead of
|
||||
# allocating a String for every request in an already populated top table.
|
||||
require("src/traffic.rs", "fn truncate(value: &str, max_bytes: usize) -> &str", "self.values.get_mut(value)", "self.values.insert(value.to_owned(), weight)")
|
||||
forbid("src/web_server/serve.rs", "Body::from(listing.clone())")
|
||||
require("src/web_server/serve.rs", "entries.retain(|entry|", "let listing_bytes = listing.len();", "Body::from(listing)")
|
||||
require("src/logging/runtime.rs", "String::from_utf8_lossy(&jsonl_line[..jsonl_line.len() - 1])")
|
||||
|
||||
# Other long-lived/background facilities: queue/task/worker cardinality is bounded
|
||||
# or owned by a cancellation-aware supervisor/TaskTracker.
|
||||
require(
|
||||
|
||||
Reference in new issue
Block a user