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

vcl_vrt: Skip VCL execution if the client is gone #3998

Merged
merged 4 commits into from
Oct 18, 2023

Commits on Oct 17, 2023

  1. vtc: Avoid cycling the barrier in t02014

    It was particularly hard to follow once we reach client c3.
    dridi committed Oct 17, 2023
    Configuration menu
    Copy the full SHA
    a703010 View commit details
    Browse the repository at this point in the history
  2. transport: New poll method

    The goal is for top-level transports to report whether the client is
    still present or not.
    dridi committed Oct 17, 2023
    Configuration menu
    Copy the full SHA
    7d53599 View commit details
    Browse the repository at this point in the history
  3. vcl_vrt: Skip VCL execution if the client is gone

    Once a client is reportedly gone, processing its VCL task(s) is just a
    waste of resources. The execution of client-facing VCL is intercepted
    and an artificial return(fail) is returned in that scenario.
    
    Thanks to the introduction of the universal return(fail) proper error
    handling and resource tear down is already in place, which makes this
    change safe modulus unknown bugs. This adds a circuit breaker anywhere
    in the client state machine where there is VCL execution.
    
    A new Reset time stamp is logged to convey when a task does not complete
    because the client is gone. This is a good complement to the walk away
    feature and its original circuit breaker for the waiting list, but this
    has not been integrated yet.
    
    While the request is technically failed, it won't increase the vcl_fail
    counter, and a new req_reset counter is incremented. This new behavior
    is guarded by a new vcl_req_reset feature flag, enabled by default.
    
    Refs varnishcache#3835
    Refs 61a15cb
    Refs e5efc2c
    Refs ba54dc9
    Refs 6f50a00
    Refs b881699
    dridi committed Oct 17, 2023
    Configuration menu
    Copy the full SHA
    2812e18 View commit details
    Browse the repository at this point in the history
  4. http2_session: Implement transport polling

    The error check is not performed in a critical section to avoid
    contention, at the risk of not seeing the error until the next
    transport poll.
    dridi committed Oct 17, 2023
    Configuration menu
    Copy the full SHA
    4a895f4 View commit details
    Browse the repository at this point in the history