@@ -99,13 +99,6 @@ async def _process_queue(self) -> None:
9999 break
100100
101101 for message_level , level_logs in logs_by_level .items ():
102- # NOTE: If it's not a next block - resync with Subsquid
103- if message_level != self .state .level + 1 :
104- self ._logger .info ('Not enough messages in queue; resyncing to %s' , message_level )
105- self ._queue .clear ()
106- self .datasource .set_sync_level (None , message_level )
107- return
108-
109102 await self ._process_level_events (tuple (level_logs ), self .topics , message_level )
110103
111104 def get_sync_level (self ) -> int :
@@ -147,16 +140,20 @@ async def _synchronize(self, sync_level: int) -> None:
147140 self ._logger .info ('Subsquid is %s levels behind; %s available' , subsquid_lag , subsquid_available )
148141 if subsquid_available < NODE_SYNC_LIMIT :
149142 use_node = True
143+ elif self ._config .node_only :
144+ self ._logger .debug ('Using node anyway' )
145+ use_node = True
150146
151147 # NOTE: Fetch last blocks from node if there are not enough realtime messages in queue
152148 if use_node and self .node_datasources :
153- sync_level = node_sync_level
149+ sync_level = min (sync_level , node_sync_level )
150+ self ._logger .debug ('Using node datasource; sync level: %s' , sync_level )
154151 topics = set ()
155152 for handler in self ._config .handlers :
156153 typename = handler .contract .module_name
157154 topics .add (self .topics [typename ][handler .name ])
158155 # FIXME: This is terribly inefficient (but okay for the last mile); see advanced example in web3.py docs.
159- for level in range (first_level , sync_level ):
156+ for level in range (first_level , sync_level + 1 ):
160157 # NOTE: Get random one every time
161158 level_logs = await self .random_node .get_logs (
162159 {
0 commit comments