expiryh
authorforrest <forrest@470744a7-cac9-478e-843e-5ec1b25c69e8>
Fri, 15 Jul 2011 11:31:34 +0000 (11:31 +0000)
committerforrest <forrest@470744a7-cac9-478e-843e-5ec1b25c69e8>
Fri, 15 Jul 2011 11:31:34 +0000 (11:31 +0000)
git-svn-id: svn://forre.st/p2pool@1395 470744a7-cac9-478e-843e-5ec1b25c69e8

p2pool/bitcoin/p2p.py
p2pool/data.py
p2pool/util/expiring_dict.py

index e804019..106eb7e 100644 (file)
@@ -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_'
index f027d8a..217e74d 100644 (file)
@@ -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
index 180cd42..db2dbac 100644 (file)
@@ -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()