5555from dipdup .models import OperationData
5656from dipdup .models import Schema
5757from dipdup .models import TokenTransferData
58+ from dipdup .models import TzktRollbackMessage
5859from dipdup .prometheus import Metrics
5960from dipdup .scheduler import SchedulerManager
6061from dipdup .transactions import TransactionManager
@@ -300,7 +301,11 @@ async def _on_events(self, datasource: IndexDatasource, events: tuple[EventData,
300301 index .push_events (events )
301302
302303 async def _on_rollback (
303- self , datasource : IndexDatasource , type_ : MessageType , from_level : int , to_level : int
304+ self ,
305+ datasource : IndexDatasource ,
306+ type_ : MessageType ,
307+ from_level : int ,
308+ to_level : int ,
304309 ) -> None :
305310 """Call `on_index_rollback` hook for each index that is affected by rollback"""
306311 if from_level <= to_level :
@@ -312,8 +317,6 @@ async def _on_rollback(
312317 Metrics .set_datasource_rollback (datasource .name )
313318
314319 # NOTE: Choose action for each index
315- affected_indexes : set [str ] = set ()
316-
317320 for index_name , index in self ._indexes .items ():
318321 index_level = index .state .level
319322
@@ -328,19 +331,11 @@ async def _on_rollback(
328331
329332 else :
330333 self ._logger .debug ('%s: affected' , index_name )
331- affected_indexes .add (index_name )
332-
333- hook_name = 'on_index_rollback'
334- for index_name in affected_indexes :
335- self ._logger .warning ('`%s` index is affected by rollback; firing `%s` hook' , index_name , hook_name )
336- await self ._ctx .fire_hook (
337- hook_name ,
338- index = self ._indexes [index_name ],
339- from_level = from_level ,
340- to_level = to_level ,
341- )
334+ index .push_realtime_message (
335+ TzktRollbackMessage (from_level , to_level ),
336+ )
342337
343- self ._logger .info ('`%s` rollback complete ' , channel )
338+ self ._logger .info ('`%s` rollback processed ' , channel )
344339
345340
346341class DipDup :
0 commit comments