From d837602394e0c9f4a5451119faa93788e94022ab Mon Sep 17 00:00:00 2001 From: nolash Date: Mon, 22 Feb 2021 22:23:30 +0100 Subject: [PATCH] Handle new return format from backend getters --- chainsyncer/db/models/sync.py | 1 + chainsyncer/driver.py | 10 +++++++--- chainsyncer/filter.py | 4 ++-- setup.cfg | 2 +- sql/postgresql/1.sql | 16 +--------------- sql/postgresql/2.sql | 12 ++++++++++++ sql/sqlite/2.sql | 2 +- 7 files changed, 25 insertions(+), 22 deletions(-) create mode 100644 sql/postgresql/2.sql diff --git a/chainsyncer/db/models/sync.py b/chainsyncer/db/models/sync.py index ab6ab88..d1d8ff5 100644 --- a/chainsyncer/db/models/sync.py +++ b/chainsyncer/db/models/sync.py @@ -51,6 +51,7 @@ class BlockchainSync(SessionBase): o = q.first() if o == None: + SessionBase.release_session(session) return None sync_id = o.id diff --git a/chainsyncer/driver.py b/chainsyncer/driver.py index 2309eea..41c1024 100644 --- a/chainsyncer/driver.py +++ b/chainsyncer/driver.py @@ -44,6 +44,7 @@ class Syncer: def add_filter(self, f): self.filter.add(f) + self.backend.register_filter(str(f)) class BlockPollSyncer(Syncer): @@ -53,7 +54,7 @@ class BlockPollSyncer(Syncer): def loop(self, interval, conn): - g = self.backend.get() + (g, flags) = self.backend.get() last_tx = g[1] last_block = g[0] self.progress_callback(last_block, last_tx, 'loop started') @@ -63,7 +64,8 @@ class BlockPollSyncer(Syncer): while True: try: block = self.get(conn) - except Exception: + except Exception as e: + logg.debug('erro {}'.format(e)) break last_block = block.number self.process(conn, block) @@ -97,7 +99,9 @@ class HeadSyncer(BlockPollSyncer): def get(self, conn): - (block_number, tx_number) = self.backend.get() + #(block_number, tx_number) = self.backend.get() + (height, flags) = self.backend.get() + block_number = height[0] block_hash = [] o = block_by_number(block_number) r = conn.do(o) diff --git a/chainsyncer/filter.py b/chainsyncer/filter.py index 263bbe5..b6f24c1 100644 --- a/chainsyncer/filter.py +++ b/chainsyncer/filter.py @@ -21,7 +21,7 @@ class SyncFilter: def add(self, fltr): if getattr(fltr, 'filter') == None: raise ValueError('filter object must implement have method filter') - logg.debug('added filter {}'.format(str(fltr))) + logg.debug('added filter "{}"'.format(str(fltr))) self.filters.append(fltr) @@ -38,7 +38,7 @@ class SyncFilter: i += 1 logg.debug('applying filter {}'.format(str(f))) f.filter(conn, block, tx, self.backend.db_session) - self.backend.set_filter() + self.backend.complete_filter(i) self.backend.disconnect() diff --git a/setup.cfg b/setup.cfg index 04005e0..94fda9f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = chainsyncer -version = 0.0.1a10 +version = 0.0.1a11 description = Generic blockchain syncer driver author = Louis Holbrook author_email = dev@holbrook.no diff --git a/sql/postgresql/1.sql b/sql/postgresql/1.sql index 17a9794..7487761 100644 --- a/sql/postgresql/1.sql +++ b/sql/postgresql/1.sql @@ -1,4 +1,4 @@ -DROP TABLE chain_sync; +DROP TABLE IF EXISTS chain_sync CASCADE; CREATE TABLE IF NOT EXISTS chain_sync ( id serial primary key not null, blockchain varchar not null, @@ -6,21 +6,7 @@ CREATE TABLE IF NOT EXISTS chain_sync ( tx_start int not null default 0, block_cursor int not null default 0, tx_cursor int not null default 0, - flags bytea not null, - num_flags int not null, block_target int default null, date_created timestamp not null, date_updated timestamp default null ); - -DROP TABLE chain_sync_filter; -CREATE TABLE IF NOT EXISTS chain_sync_filter ( - id serial primary key not null, - chain_sync_id int not null, - flags bytea default null, - count int not null default 0, - digest char(64) not null default '0000000000000000000000000000000000000000000000000000000000000000', - CONSTRAINT fk_chain_sync - FOREIGN KEY(chain_sync_id) - REFERENCES chain_sync(id) -); diff --git a/sql/postgresql/2.sql b/sql/postgresql/2.sql new file mode 100644 index 0000000..b26d95d --- /dev/null +++ b/sql/postgresql/2.sql @@ -0,0 +1,12 @@ +DROP TABLE IF EXISTS chain_sync_filter; +CREATE TABLE IF NOT EXISTS chain_sync_filter ( + id serial primary key not null, + chain_sync_id integer not null, + flags bytea default null, + flags_start bytea default null, + count integer not null default 0, + digest bytea not null, + CONSTRAINT fk_chain_sync + FOREIGN KEY(chain_sync_id) + REFERENCES chain_sync(id) +); diff --git a/sql/sqlite/2.sql b/sql/sqlite/2.sql index 9e42802..e366748 100644 --- a/sql/sqlite/2.sql +++ b/sql/sqlite/2.sql @@ -4,7 +4,7 @@ CREATE TABLE IF NOT EXISTS chain_sync_filter ( flags bytea default null, flags_start bytea default null, count integer not null default 0, - digest char(64) not null default '0000000000000000000000000000000000000000000000000000000000000000', + digest bytea not null, CONSTRAINT fk_chain_sync FOREIGN KEY(chain_sync_id) REFERENCES chain_sync(id)