• Niklas Adolfsson's avatar
    rpc server: add prometheus label `is_rate_limited` (#3504) · efcea0ed
    Niklas Adolfsson authored
    After some discussion with @kogeler
    
     after the we added the rate-limit
    middleware it may slow down
    the rpc call timings metrics significantly because it works as follows:
    
    1. The rate limit guard is checked when the call comes and if a slot is
    available -> process the call
    2. If no free spot is available then the call will be sleeping
    `jitter_delay + min_time_rate_guard` then woken up and checked at most
    ten times
    3. If no spot is available after 10 iterations -> the call is rejected
    (this may take tens of seconds)
    
    Thus, this PR adds a label "is_rate_limited" to filter those out on the
    metrics "substrate_rpc_calls_time" and "substrate_rpc_calls_finished".
    
    I had to merge two middleware layers Metrics and RateLimit to avoid
    shared state in a hacky way.
    
    ---------
    
    Co-authored-by: default avatarJames Wilson <[email protected]>
    efcea0ed