Revision 71e114da
ID | 71e114da4ce07bcbe76516069b621ac459da3d69 |
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>
Files
- added
- modified
- copied
- renamed
- deleted