from Abe.DataStore import DataStore as Datastore_class
from Abe import DataStore, readconf, BCDataStream, deserialize, util, base58
-import psycopg2, binascii
+import binascii
import thread, traceback, sys, urllib, operator
from json import dumps, loads
try:
if lock: self.dblock.acquire()
ret = self.selectall(sql,params)
- if lock: self.dblock.release()
- return ret
except:
print "sql error", sql
- return []
+ ret = []
+ finally:
+ if lock: self.dblock.release()
+
+ return ret
+
def get_tx_outputs(self, tx_id, lock=True):
return self.safe_sql("""SELECT
respdata = urllib.urlopen(self.bitcoind_url, postdata).read()
r = loads(respdata)
if r['error'] != None:
- out = "error: transaction rejected by memorypool\n"+tx
+ msg = r['error'].get('message')
+ out = "error: transaction rejected by memorypool: " + msg + "\n" + tx
else:
out = r['result']
return out
return block_number
+ def catch_up(store):
+ # if there is an exception, do rollback and then re-raise the exception
+ for dircfg in store.datadirs:
+ try:
+ store.catch_up_dir(dircfg)
+ except Exception, e:
+ store.log.exception("Failed to catch up %s", dircfg)
+ store.rollback()
+ raise e
+
+
+
+
from processor import Processor
class BlockchainProcessor(Processor):
print "unknown method", request
if result != '':
- response = { 'id':message_id, 'method':method, 'params':params, 'result':result }
+ response = { 'id':message_id, 'result':result }
self.push_response(response)
if self.block_number != old_block_number:
old_block_number = self.block_number
- self.push_response({ 'method':'blockchain.numblocks.subscribe', 'result':self.block_number })
+ self.push_response({ 'method':'blockchain.numblocks.subscribe', 'params':[self.block_number] })
while True:
try:
break
if addr in self.watched_addresses:
status = self.store.get_status( addr )
- self.push_response({ 'method':'blockchain.address.subscribe', 'params':[addr], 'result':status })
+ self.push_response({ 'method':'blockchain.address.subscribe', 'params':[addr, status] })
time.sleep(10)