X-Git-Url: https://git.novaco.in/?p=electrum-server.git;a=blobdiff_plain;f=backends%2Fbitcoind%2Fblockchain_processor.py;h=94cfbfadfb5db92356b2f0bf24867b3262103414;hp=73e1a649e3cee5bcac75d2bf50c1ff9eb4a8cae0;hb=d7c603a8739f6f4d5128ac2377c4368e1576d85d;hpb=81d6be9c4519622a508b80bca039cef1de137fd3 diff --git a/backends/bitcoind/blockchain_processor.py b/backends/bitcoind/blockchain_processor.py index 73e1a64..94cfbfa 100644 --- a/backends/bitcoind/blockchain_processor.py +++ b/backends/bitcoind/blockchain_processor.py @@ -87,7 +87,8 @@ class BlockchainProcessor(Processor): self.memorypool_update() print_log("Memory pool initialized.") - threading.Timer(10, self.main_iteration).start() + self.timer = threading.Timer(10, self.main_iteration) + self.timer.start() @@ -111,6 +112,7 @@ class BlockchainProcessor(Processor): try: respdata = urllib.urlopen(self.bitcoind_url, postdata).read() except: + print_log("error calling bitcoind") traceback.print_exc(file=sys.stdout) self.shared.stop() @@ -252,6 +254,7 @@ class BlockchainProcessor(Processor): hist = self.storage.get_history(addr) is_known = True except: + print_log("error get_history") self.shared.stop() raise if hist: @@ -446,7 +449,7 @@ class BlockchainProcessor(Processor): if session in l: l.remove(session) if session in l: - print "error rc!!" + print_log("error rc!!") self.shared.stop() if l == []: self.watched_addresses.pop(addr) @@ -596,6 +599,7 @@ class BlockchainProcessor(Processor): try: respdata = urllib.urlopen(self.bitcoind_url, postdata).read() except: + print_log("bitcoind error (getfullblock)") traceback.print_exc(file=sys.stdout) self.shared.stop() @@ -748,10 +752,17 @@ class BlockchainProcessor(Processor): # TODO: update cache here. if new value equals cached value, do not send notification self.address_queue.put((address,sessions)) + + def close(self): + self.timer.join() + print_log("Closing database...") + self.storage.close() + print_log("Database is closed") + + def main_iteration(self): if self.shared.stopped(): - print_log("blockchain processor terminating") - self.storage.close() + print_log("Stopping timer") return with self.dblock: @@ -794,7 +805,7 @@ class BlockchainProcessor(Processor): 'params': [addr, status], }) - if not self.shared.stopped(): - threading.Timer(10, self.main_iteration).start() - else: - print_log("blockchain processor terminating") + # next iteration + self.timer = threading.Timer(10, self.main_iteration) + self.timer.start() +