def run
success = false
scan_class = TableScanHelper.scan_class(session)
scan = scan_class.new(session, left_table, right_table)
scan.progress_printer = progress_printer
self.helper = SyncHelper.new(self)
syncer = Syncers.configured_syncer(sync_options).new(helper)
execute_sync_hook :before_table_sync
scan.run do |type, row|
yield type, row if block_given?
unless event_filtered?(type, row)
syncer.sync_difference type, row
end
end
execute_sync_hook :after_table_sync
success = true
ensure
helper.finalize success if helper
end