• Jason Yellick's avatar
    op-node: RPC Limit client does not respect context · a77ef6dc
    Jason Yellick authored
    This change addresses two bugs.
    
    1. The existing limit.go implements its own semaphore which ignores the
       passed in context.  This means that the semaphore will block
       indefinitely, even when the context of the request has already
       expired.
    
    2. The existing implementation does not guard against clients which
       invoke RPC methods after the channel underlying the custom semaphore
       has been closed.  This results in panics where the closed channel is
       written to during shutdown, and results in test flakiness.  This
       flakiness is most evident in the op-e2e-http-tests suite.
    
    Along with these fixes comes a test which attempts to demonstrate the
    previous bad behavior.  Because these bugs are inherently tied to the
    interaction of multiple go routines, the test ends up being a bit
    complex, but is well commented and hopefully remains readable.
    a77ef6dc
limit.go 2.19 KB