diff --git a/thingsboard_gateway/gateway/tb_gateway_service.py b/thingsboard_gateway/gateway/tb_gateway_service.py index 4ea7b421..6a89d2e2 100644 --- a/thingsboard_gateway/gateway/tb_gateway_service.py +++ b/thingsboard_gateway/gateway/tb_gateway_service.py @@ -208,8 +208,8 @@ class TBGatewayService: self.__published_events.append(self.tb_client.client.gw_send_attributes(current_event["deviceName"], filtered_attributes)) success = True - for event in range(len(self.__published_events)): - success = self.__published_events[event].get() == self.__published_events[event].TB_ERR_SUCCESS + for event in self.__published_events: + success = event.get() == event.TB_ERR_SUCCESS if success: self.__event_storage.event_pack_processing_done() except Exception as e: diff --git a/thingsboard_gateway/storage/event_storage_reader.py b/thingsboard_gateway/storage/event_storage_reader.py index 533d8026..51761009 100644 --- a/thingsboard_gateway/storage/event_storage_reader.py +++ b/thingsboard_gateway/storage/event_storage_reader.py @@ -48,6 +48,12 @@ class EventStorageReader: records_to_read -= 1 except IOError as e: log.warning("Could not parse line [%s] to uplink message! %s", line, e) + except Exception as e: + log.exception(e) + current_line_in_file += 1 + self.new_pos.set_line(current_line_in_file) + self.write_info_to_state_file(self.new_pos) + break finally: current_line_in_file += 1 if records_to_read > 0: @@ -66,6 +72,7 @@ class EventStorageReader: self.delete_read_file(previous_file) self.new_pos = EventStorageReaderPointer(next_file, 0) self.write_info_to_state_file(self.new_pos) + continue else: # No more records to read for now break @@ -86,7 +93,7 @@ class EventStorageReader: def discard_batch(self): try: - if self.current_pos.get_line() >= self.settings.get_max_records_per_file(): + if self.current_pos.get_line() >= self.settings.get_max_records_per_file()-1: if self.buffered_reader is not None and not self.buffered_reader.closed: self.buffered_reader.close() self.write_info_to_state_file(self.new_pos) @@ -107,7 +114,6 @@ class EventStorageReader: found = True return target_file - def get_or_init_buffered_reader(self, pointer): try: if self.buffered_reader is None or self.buffered_reader.closed: