fix for 26aaf0cc4
authorForrest Voight <forrest.voight@gmail.com>
Wed, 22 Feb 2012 16:49:18 +0000 (11:49 -0500)
committerForrest Voight <forrest@forre.st>
Wed, 22 Feb 2012 16:58:53 +0000 (11:58 -0500)
p2pool/main.py
p2pool/web.py

index 98ae9bb..a2fc6b9 100644 (file)
@@ -437,6 +437,7 @@ def main(args, net, datadir_path, merged_urls, worker_endpoint):
             return (my_shares_not_in_chain - my_doa_shares_not_in_chain, my_doa_shares_not_in_chain), my_shares, (orphans_recorded_in_chain, doas_recorded_in_chain)
         
         
+        pseudoshare_received = variable.Event()
         local_rate_monitor = math.RateMonitor(10*60)
         
         class WorkerBridge(worker_interface.WorkerBridge):
@@ -646,9 +647,7 @@ def main(args, net, datadir_path, merged_urls, worker_endpoint):
                             log.err(None, 'Error forwarding block solution:')
                     
                     if pow_hash <= target and header_hash not in received_header_hashes:
-                        reactor.callLater(1, grapher.add_localrate_point, bitcoin_data.target_to_average_attempts(target), not on_time)
-                        if request.getPassword() == vip_pass:
-                            reactor.callLater(1, grapher.add_localminer_point, request.getUser(), bitcoin_data.target_to_average_attempts(target), not on_time)
+                        pseudoshare_received.happened(bitcoin_data.target_to_average_attempts(target), not on_time, request.getUser() if request.getPassword() == vip_pass else None)
                         self.recent_shares_ts_work.append((time.time(), bitcoin_data.target_to_average_attempts(target)))
                         while len(self.recent_shares_ts_work) > 50:
                             self.recent_shares_ts_work.pop(0)
@@ -669,7 +668,7 @@ def main(args, net, datadir_path, merged_urls, worker_endpoint):
         
         get_current_txouts = lambda: p2pool_data.get_expected_payouts(tracker, current_work.value['best_share_hash'], current_work.value['bits'].target, current_work2.value['subsidy'], net)
         
-        web_root = web.get_web_root(tracker, current_work, current_work2, get_current_txouts, datadir_path, net, get_stale_counts, my_pubkey_hash, local_rate_monitor, args.worker_fee, p2p_node, my_share_hashes, recent_blocks)
+        web_root = web.get_web_root(tracker, current_work, current_work2, get_current_txouts, datadir_path, net, get_stale_counts, my_pubkey_hash, local_rate_monitor, args.worker_fee, p2p_node, my_share_hashes, recent_blocks, pseudoshare_received)
         worker_interface.WorkerInterface(WorkerBridge()).attach_to(web_root)
         
         deferral.retry('Error binding to worker port:', traceback=False)(reactor.listenTCP)(worker_endpoint[1], server.Site(web_root), interface=worker_endpoint[0])
index 149fe81..a352015 100644 (file)
@@ -4,7 +4,7 @@ import os
 import time
 import types
 
-from twisted.internet import task
+from twisted.internet import reactor, task
 from twisted.python import log
 from twisted.web import resource
 
@@ -12,7 +12,7 @@ from bitcoin import data as bitcoin_data
 from . import data as p2pool_data, graphs
 from util import math
 
-def get_web_root(tracker, current_work, current_work2, get_current_txouts, datadir_path, net, get_stale_counts, my_pubkey_hash, local_rate_monitor, worker_fee, p2p_node, my_share_hashes, recent_blocks):
+def get_web_root(tracker, current_work, current_work2, get_current_txouts, datadir_path, net, get_stale_counts, my_pubkey_hash, local_rate_monitor, worker_fee, p2p_node, my_share_hashes, recent_blocks, pseudoshare_received):
     start_time = time.time()
     
     web_root = resource.Resource()
@@ -274,5 +274,11 @@ def get_web_root(tracker, current_work, current_work2, get_current_txouts, datad
         poolrate = nonstalerate / (1 - p2pool_data.get_average_stale_prop(tracker, current_work.value['best_share_hash'], 720))
         grapher.add_poolrate_point(poolrate, poolrate - nonstalerate)
     task.LoopingCall(add_point).start(100)
+    @pseudoshare_received.watch
+    def _(work, dead, user):
+        reactor.callLater(1, grapher.add_localrate_point, work, dead)
+        if user is not None:
+            reactor.callLater(1, grapher.add_localminer_point, user, work, dead)
+
     
     return web_root