lib/connectors/tolerable_error_helper.rb (36 lines of code) (raw):

# # Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one # or more contributor license agreements. Licensed under the Elastic License; # you may not use this file except in compliance with the Elastic License. # require 'utility/logger' require 'utility/exception_tracking' require 'utility/error_monitor' module Connectors class TolerableErrorHelper def initialize(error_monitor) @error_monitor = error_monitor end def yield_single_document(identifier: nil) Utility::Logger.debug("Extracting single document for #{identifier}") if identifier yield @error_monitor.note_success rescue *fatal_exception_classes => e Utility::ExceptionTracking.augment_exception(e) Utility::Logger.error("Encountered a fall-through error during extraction#{identifying_error_message(identifier)}: #{e.class}: #{e.message} {:message_id => #{e.id}}") raise rescue StandardError => e Utility::ExceptionTracking.augment_exception(e) Utility::Logger.warn("Encountered error during extraction#{identifying_error_message(identifier)}: #{e.class}: #{e.message} {:message_id => #{e.id}}") @error_monitor.note_error(e, :id => e.id) end private def identifying_error_message(identifier) identifier.present? ? " of '#{identifier}'" : '' end def fatal_exception_classes [ Utility::ErrorMonitor::MonitoringError, Core::ConnectorNotFoundError, Core::ConnectorJobNotFoundError, Core::ConnectorJobCanceledError, Core::ConnectorJobNotRunningError ] end end end