From: ThomasV Date: Tue, 19 Jun 2012 10:12:05 +0000 (+0400) Subject: stop the server if abe fails X-Git-Url: https://git.novaco.in/?p=electrum-server.git;a=commitdiff_plain;h=5f39f3e7c91ad135ad86c8cf964d2bef235719b7 stop the server if abe fails --- diff --git a/backends/abe/__init__.py b/backends/abe/__init__.py index 1971a6c..745db87 100644 --- a/backends/abe/__init__.py +++ b/backends/abe/__init__.py @@ -400,22 +400,13 @@ class AbeStore(Datastore_class): def main_iteration(store): - try: - store.dblock.acquire() + with store.dblock: store.catch_up() store.memorypool_update() block_number = store.get_block_number(1) + return block_number - except IOError: - print "IOError: cannot reach bitcoind" - block_number = 0 - except: - traceback.print_exc(file=sys.stdout) - block_number = 0 - finally: - store.dblock.release() - return block_number def catch_up(store): @@ -494,11 +485,18 @@ class BlockchainProcessor(Processor): def run_store_iteration(self): + + try: + block_number = self.store.main_iteration() + except: + traceback.print_exc(file=sys.stdout) + print "terminating" + self.shared.stop() + if self.shared.stopped(): print "exit timer" return - - block_number = self.store.main_iteration() + if self.block_number != block_number: self.block_number = block_number print "block number:", self.block_number diff --git a/backends/irc/__init__.py b/backends/irc/__init__.py index 28e60d9..5d92ac1 100644 --- a/backends/irc/__init__.py +++ b/backends/irc/__init__.py @@ -144,6 +144,10 @@ class ServerProcessor(Processor): "subscriptions":len(s.subscriptions)}, self.dispatcher.request_dispatcher.get_sessions()) + elif method == 'server.cache': + p = self.dispatcher.request_dispatcher.processors['blockchain'] + result = len(repr(p.store.tx_cache)) + elif method == 'server.load': p = self.dispatcher.request_dispatcher.processors['blockchain'] result = p.queue.qsize()