ConfdClient: unify some internal variables
Currently the requests are tracked in _request and in _expire_requests. This is conventient, but it restricts the ability to extend the request tracking, e.g. via packet stats and/or extension of expiration time. This patch introduces a new simple class _Request that holds all properties of pending requests; it then uses instances of this class as values in _request instead of tuples, and removes the _expire_requests. The only drawback is the change in behaviour of _ExpireRequests: previously, it used to scan the list only up to the first non-expired request, after which it aborted. Now it will scan the entire dict, which (depending on workload) could change the time behaviour. I don't think this is a problem, as: - deleting from the head of a list is very expensive (list.pop(0); list.append() is an order of magnitude more expensive than deleting an element from a dictionary and re-adding it) - we should have more than tens or hundreds of pending requests; in case this assumption changes, we could introduce a no-more-often-than-X expiration policy, etc. Signed-off-by:Iustin Pop <iustin@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
Please register or sign in to comment