add rpcAttempts and replacementCacheSize constants

This commit is contained in:
Jack Robison 2017-10-10 13:16:26 -04:00
parent fcaca05a81
commit 2a47385b62
No known key found for this signature in database
GPG key ID: 284699E7404E3CFF
2 changed files with 8 additions and 5 deletions

View file

@ -21,9 +21,15 @@ alpha = 3
#: Maximum number of contacts stored in a bucket; this should be an even number #: Maximum number of contacts stored in a bucket; this should be an even number
k = 8 k = 8
#: Maximum number of contacts stored in the replacement cache
replacementCacheSize = 8
#: Timeout for network operations (in seconds) #: Timeout for network operations (in seconds)
rpcTimeout = 5 rpcTimeout = 5
# number of rpc attempts to make before a timeout results in the node being removed as a contact
rpcAttempts = 5
# 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

View file

@ -320,10 +320,7 @@ class OptimizedTreeRoutingTable(TreeRoutingTable):
self._replacementCache[bucketIndex] = [] self._replacementCache[bucketIndex] = []
if contact in self._replacementCache[bucketIndex]: if contact in self._replacementCache[bucketIndex]:
self._replacementCache[bucketIndex].remove(contact) self._replacementCache[bucketIndex].remove(contact)
# TODO: Using k to limit the size of the contact elif len(self._replacementCache[bucketIndex]) >= constants.replacementCacheSize:
# replacement cache - maybe define a separate value for
# this in constants.py?
elif len(self._replacementCache[bucketIndex]) >= constants.k:
self._replacementCache[bucketIndex].pop(0) self._replacementCache[bucketIndex].pop(0)
self._replacementCache[bucketIndex].append(contact) self._replacementCache[bucketIndex].append(contact)
@ -340,7 +337,7 @@ class OptimizedTreeRoutingTable(TreeRoutingTable):
except ValueError: except ValueError:
return return
contact.failedRPCs += 1 contact.failedRPCs += 1
if contact.failedRPCs >= 5: if contact.failedRPCs >= constants.rpcAttempts:
self._buckets[bucketIndex].removeContact(contactID) self._buckets[bucketIndex].removeContact(contactID)
# Replace this stale contact with one from our replacement cache, if we have any # Replace this stale contact with one from our replacement cache, if we have any
if bucketIndex in self._replacementCache: if bucketIndex in self._replacementCache: