forked from LBRYCommunity/lbry-sdk
prune failures during is_ignored calls
This commit is contained in:
parent
cfe8e17223
commit
5c7d279104
2 changed files with 10 additions and 1 deletions
|
@ -29,6 +29,8 @@ rpcTimeout = 5
|
||||||
|
|
||||||
# number of rpc attempts to make before a timeout results in the node being removed as a contact
|
# number of rpc attempts to make before a timeout results in the node being removed as a contact
|
||||||
rpcAttempts = 5
|
rpcAttempts = 5
|
||||||
|
# time window to count failures (in seconds)
|
||||||
|
rpcAttemptsPruningTimeWindow = 600
|
||||||
|
|
||||||
# Delay between iterations of iterative node lookups (for loose parallelism) (in seconds)
|
# Delay between iterations of iterative node lookups (for loose parallelism) (in seconds)
|
||||||
iterativeLookupDelay = rpcTimeout / 2
|
iterativeLookupDelay = rpcTimeout / 2
|
||||||
|
|
|
@ -185,5 +185,12 @@ class ContactManager(object):
|
||||||
return contact
|
return contact
|
||||||
|
|
||||||
def is_ignored(self, origin_tuple):
|
def is_ignored(self, origin_tuple):
|
||||||
failed_rpc_count = len(self._rpc_failures.get(origin_tuple, []))
|
failed_rpc_count = len(self._prune_failures(origin_tuple))
|
||||||
return failed_rpc_count > constants.rpcAttempts
|
return failed_rpc_count > constants.rpcAttempts
|
||||||
|
|
||||||
|
def _prune_failures(self, origin_tuple):
|
||||||
|
# Prunes recorded failures to the last time window of attempts
|
||||||
|
pruning_limit = self._get_time() - constants.rpcAttemptsPruningTimeWindow
|
||||||
|
pruned = list(filter(lambda t: t >= pruning_limit, self._rpc_failures.get(origin_tuple, [])))
|
||||||
|
self._rpc_failures[origin_tuple] = pruned
|
||||||
|
return pruned
|
||||||
|
|
Loading…
Reference in a new issue