X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=backends%2Fabe%2F__init__.py;h=745db879b7fa57ebbe0acf13fe9a37356d8ed58a;hb=5f39f3e7c91ad135ad86c8cf964d2bef235719b7;hp=d34cf28069ced3513bdda73a24b467c5521b9f43;hpb=58c5d73cb2503b5fb7d08f091565de10d4d9b9a1;p=electrum-server.git diff --git a/backends/abe/__init__.py b/backends/abe/__init__.py index d34cf28..745db87 100644 --- a/backends/abe/__init__.py +++ b/backends/abe/__init__.py @@ -26,7 +26,7 @@ class AbeStore(Datastore_class): Datastore_class.__init__(self,args) - self.sql_limit = config.get('database','limit') + self.sql_limit = int( config.get('database','limit') ) self.tx_cache = {} self.bitcoind_url = 'http://%s:%s@%s:%s/' % ( config.get('bitcoind','user'), config.get('bitcoind','password'), config.get('bitcoind','host'), config.get('bitcoind','port')) @@ -87,6 +87,7 @@ class AbeStore(Datastore_class): ret = self.selectall(sql,params) except: error = True + traceback.print_exc(file=sys.stdout) finally: if lock: self.dblock.release() @@ -267,7 +268,8 @@ class AbeStore(Datastore_class): rows += self.get_address_out_rows_memorypool( dbhash ) address_has_mempool = False - current_id = self.new_id("tx") + current_id = self.safe_sql("""SELECT last_value FROM tx_seq""") + current_id = current_id[0][0] for row in rows: is_in, tx_hash, tx_id, pos, value = row @@ -380,6 +382,7 @@ class AbeStore(Datastore_class): else: tx_id = store.import_tx(tx, False) store.update_tx_cache(tx_id) + #print tx_hash store.commit() @@ -397,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): @@ -491,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