-
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