shared.stop()
sys.exit(0)
- print "blockchain is up to date."
+ print_log( "blockchain is up to date." )
threading.Timer(10, self.main_iteration).start()
self.db.Write(batch, sync = sync)
t3 = time.time()
- if t3 - t0 > 10:
+ if t3 - t0 > 10 and not sync:
print_log("block", block_height,
"parse:%0.2f "%(t00 - t0),
"read:%0.2f "%(t1 - t00),
self.mempool_addresses.pop(tx_hash)
# rebuild histories
- with self.mempool_lock:
- self.mempool_hist = {}
- for tx_hash, addresses in self.mempool_addresses.items():
- for addr in addresses:
- h = self.mempool_hist.get(addr, [])
- if tx_hash not in h:
- h.append( tx_hash )
- self.mempool_hist[addr] = h
- self.invalidate_cache(addr)
+ new_mempool_hist = {}
+ for tx_hash, addresses in self.mempool_addresses.items():
+ for addr in addresses:
+ h = new_mempool_hist.get(addr, [])
+ if tx_hash not in h:
+ h.append( tx_hash )
+ new_mempool_hist[addr] = h
+
+ for addr in new_mempool_hist.keys():
+ if addr in self.mempool_hist.keys():
+ if self.mempool_hist[addr] != new_mempool_hist[addr]:
+ self.invalidate_cache(addr)
+ else:
+ self.invalidate_cache(addr)
+ with self.mempool_lock:
+ self.mempool_hist = new_mempool_hist
print_log( "cache: invalidating", address )
self.history_cache.pop(address)
+ if address in self.watched_addresses:
+ self.address_queue.put(address)
+
def main_iteration(self):
if addr in self.watched_addresses:
status = self.get_status( addr )
self.push_response({ 'id': None, 'method':'blockchain.address.subscribe', 'params':[addr, status] })
+ self.push_response({ 'id': None, 'method':'blockchain.address.subscribe2', 'params':[addr, status] })
if not self.shared.stopped():