« Previous | Next » 

Revision 71e114da

ID71e114da4ce07bcbe76516069b621ac459da3d69

Added by Iustin Pop almost 14 years ago

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 <>
Reviewed-by: Guido Trotter <>

Files

  • added
  • modified
  • copied
  • renamed
  • deleted

View differences