From: forrest Date: Fri, 15 Jul 2011 11:31:34 +0000 (+0000) Subject: expiryh X-Git-Tag: 0.8.2~374 X-Git-Url: https://git.novaco.in/?a=commitdiff_plain;h=fc44827f8987c767758d2fc9edb7839a49c49295;p=p2pool.git expiryh git-svn-id: svn://forre.st/p2pool@1395 470744a7-cac9-478e-843e-5ec1b25c69e8 --- diff --git a/p2pool/bitcoin/p2p.py b/p2pool/bitcoin/p2p.py index e804019..106eb7e 100644 --- a/p2pool/bitcoin/p2p.py +++ b/p2pool/bitcoin/p2p.py @@ -111,7 +111,6 @@ class BaseProtocol(protocol.Protocol): raise ValueError('compressed payload too long') data = self._prefix + struct.pack('<12sI', command, len(compressed_payload)) + checksum + compressed_payload self.transport.write(data) - print "SEND", command, len(compressed_payload) def __getattr__(self, attr): prefix = 'send_' diff --git a/p2pool/data.py b/p2pool/data.py index f027d8a..217e74d 100644 --- a/p2pool/data.py +++ b/p2pool/data.py @@ -356,7 +356,7 @@ class OkayTracker(bitcoin_data.Tracker): return best, desired - @memoize.memoize_with_backing(expiring_dict.ExpiringDict(5, get_touches=False)) + @memoize.memoize_with_backing(expiring_dict.ExpiringDict(15, get_touches=False)) def score(self, share_hash, ht): head_height, last = self.verified.get_height_and_last(share_hash) score2 = 0 diff --git a/p2pool/util/expiring_dict.py b/p2pool/util/expiring_dict.py index 180cd42..db2dbac 100644 --- a/p2pool/util/expiring_dict.py +++ b/p2pool/util/expiring_dict.py @@ -1,5 +1,6 @@ from __future__ import division +import random import time from twisted.internet import reactor @@ -121,13 +122,14 @@ class ExpiringDict(object): node.delete() new_value = old_value if value is self._nothing else value - self.d[key] = self.expiry_deque.append((time.time(), key)), new_value + self.d[key] = self.expiry_deque.append((time.time() + random.expovariate(1/self.expiry_time), key)), new_value return new_value def expire(self): + t = time.time() for node in self.expiry_deque: timestamp, key = node.contents - if timestamp + self.expiry_time > time.time(): + if timestamp > t: break del self.d[key] node.delete()