Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

subscriber: impl Clone for EnvFilter #2956

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Commits on Apr 26, 2024

  1. subscriber: impl Clone for EnvFilter

    This is useful when using `EnvFilter` for multiple identical per-layer
    filters, as well as with clap and similar libraries that have `Clone`
    bounds.
    
    We generally expect users to be cloning an `EnvFilter` before attaching it
    to a subscriber, rather than cloning `EnvFilters` that are already
    attached. Because of this, we reset all the accumulated dynamic state
    when cloning. This means that some spans and callsites might be missed
    when an already-attached `EnvFilter` is cloned, but the presence of the
    dynamic state mean that detaching and attaching `EnvFilter`s to existing
    subscribers (e.g. with `reload`) already doesn't work very well. This
    isn't a new class of problem.
    
    There was a previous implementation of this in tokio-rs#2398, that shared the
    dynamic state between all cloned filters behind an `Arc`. I chose
    not do go for that approach because it causes inconsistencies if the
    cloned filters are attached to different subscribers.
    
    Fixes: tokio-rs#2360
    Benjamin-L committed Apr 26, 2024
    Configuration menu
    Copy the full SHA
    bf4acba View commit details
    Browse the repository at this point in the history