From fd62ad70757b2edd2a5f1dc316b522e573e893ce Mon Sep 17 00:00:00 2001 From: lash Date: Sat, 9 Apr 2022 18:58:47 +0000 Subject: [PATCH] Avoid double sync of history when caught up --- chainsyncer/backend/sql.py | 5 +++-- chainsyncer/driver/poll.py | 6 ++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/chainsyncer/backend/sql.py b/chainsyncer/backend/sql.py index 4eaaf9b..bf6ed13 100644 --- a/chainsyncer/backend/sql.py +++ b/chainsyncer/backend/sql.py @@ -11,7 +11,7 @@ from chainsyncer.db.models.filter import BlockchainSyncFilter from chainsyncer.db.models.base import SessionBase from .base import Backend -logg = logging.getLogger().getChild(__name__) +logg = logging.getLogger(__name__) class SQLBackend(Backend): @@ -267,7 +267,8 @@ class SQLBackend(Backend): session.flush() #if block_height != block_resume: - if highest_unsynced_block < block_resume: + logg.info('last live id {} {} {}'.format(last_live_id, highest_unsynced_block, block_resume)) + if highest_unsynced_block <= block_resume: q = session.query(BlockchainSyncFilter) q = q.filter(BlockchainSyncFilter.chain_sync_id==last_live_id) diff --git a/chainsyncer/driver/poll.py b/chainsyncer/driver/poll.py index cb7c790..859925c 100644 --- a/chainsyncer/driver/poll.py +++ b/chainsyncer/driver/poll.py @@ -65,6 +65,12 @@ class BlockPollSyncer(Syncer): :returns: See chainsyncer.backend.base.Backend.get """ (pair, fltr) = self.backend.get() + (target, fltr_target) = self.backend.target() + if target == pair[0]: + logg.info('syncer was done before it started: {}'.format(self)) + raise SyncDone(target) + + start_tx = pair[1]