Skip to content

Commit 0a15cf4

Browse files
Fix crash occurring when reorg message is the first one from TzKT (#232)
* Fix crash occurring when reorg message is the first one received by the datasource * Changelog
1 parent 0a959df commit 0a15cf4

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Please use [this](https://docs.gitlab.com/ee/development/changelog.html) documen
1111
* context: Fixed ignored `wait` argument of `fire_hook` method.
1212
* hasura: Fixed processing relation fields with missing `related_name`.
1313
* jobs: Fixed default `apscheduler` config.
14+
* tzkt: Fixed crash occurring when reorg message is the first one received by the datasource.
1415

1516
## 4.2.2 - 2022-02-01
1617

src/dipdup/datasources/tzkt/datasource.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -683,12 +683,21 @@ async def _extract_message_data(self, type_: MessageType, message: List[Any]) ->
683683

684684
# NOTE: Emit rollback, but not on `head` message
685685
elif tzkt_type == TzktMessageType.REORG:
686-
if current_level is None:
687-
raise RuntimeError('Reorg message received but level is not set')
688686
# NOTE: operation/big_map channels have their own levels
689687
if type_ == MessageType.head:
690688
return
691689

690+
# NOTE: If no data messages were received since run, use sync level instead
691+
if current_level is None:
692+
# NOTE: There's only one sync level for all channels, otherwise `Index.process` would fail
693+
current_level = self.get_sync_level(HeadSubscription())
694+
if not current_level:
695+
raise RuntimeError('Reorg message received, but neither current nor sync level is known')
696+
697+
# NOTE: This rollback does not affect us, so we can safely ignore it
698+
if current_level <= level:
699+
return
700+
692701
self._logger.info('Emitting rollback from %s to %s', current_level, level)
693702
await self.emit_rollback(current_level, level)
694703

0 commit comments

Comments
 (0)