mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-08-24 00:00:11 +02:00
## Motivation Currently, `tokio-trace-core` permits `Subscriber`s to indicate that they are "always", "sometimes", or "never" interested in a particular callsite. When "always" or "never" is returned, then the interest is cached and the subscriber will not be asked again about that callsite. This is much more efficient than requiring the filter to be re-evaluated every time the callsite is hit. However, if a subscriber wishes to change its filter configuration dynamically at runtime, it cannot benefit from this caching. Instead, it must always return `Interest::sometimes`. Even when filters change very infrequently, they must still always be re-evaluated every time. In order to support a use-case where subscribers may change their filter configuration at runtime (e.g. tokio-rs/tokio-trace-nursery#42), but do so infrequently, we should introducing a new function to invalidate the cached interest. ## Solution This branch adds a new function in the `callsite` module, called `rebuild_interest_cache`, that will invalidate and rebuild all cached interest. ## Breaking Change In order to fix a race condition that could occur when rebuilding interest caches using `clear_interest` and `add_interest`, these methods have been replaced by a new `set_interest` method. `set_interest` should have the semantics of atomically replacing the previous cached interest, so that the callsite does not enter a temporary state where it has no interest. Closes #1038 Co-Authored-By: yaahallo <[email protected]>
48 lines
1.2 KiB
TOML
48 lines
1.2 KiB
TOML
[package]
|
|
name = "tokio-trace"
|
|
version = "0.0.1"
|
|
authors = ["Eliza Weisman <[email protected]>"]
|
|
license = "MIT"
|
|
repository = "https://github.com/tokio-rs/tokio"
|
|
homepage = "https://tokio.rs"
|
|
description = """
|
|
A scoped, structured logging and diagnostics system.
|
|
"""
|
|
categories = ["development-tools::debugging", "asynchronous"]
|
|
keywords = ["logging", "tracing"]
|
|
|
|
# Not yet ready for production.
|
|
publish = false
|
|
|
|
[dependencies]
|
|
tokio-trace-core = { path = "./tokio-trace-core" }
|
|
log = { version = "0.4", optional = true }
|
|
cfg-if = "0.1.7"
|
|
|
|
[dev-dependencies]
|
|
ansi_term = "0.11"
|
|
humantime = "1.1.1"
|
|
futures = "0.1"
|
|
log = "0.4"
|
|
# These are used for the "basic" example from the tokio-trace-prototype repo,
|
|
# which is currently not included as it used the `tokio-trace-log` crate, and
|
|
# that crate is currently unstable.
|
|
# env_logger = "0.5"
|
|
# tokio-trace-log = { path = "../tokio-trace-log" }
|
|
|
|
[features]
|
|
max_level_off = []
|
|
max_level_error = []
|
|
max_level_warn = []
|
|
max_level_info = []
|
|
max_level_debug = []
|
|
max_level_trace = []
|
|
|
|
release_max_level_off = []
|
|
release_max_level_error = []
|
|
release_max_level_warn = []
|
|
release_max_level_info = []
|
|
release_max_level_debug = []
|
|
release_max_level_trace = []
|
|
|