diaspora/app/workers/receive_base.rb
Benjamin Neff f0aca56c8f
Don't retry for PublicKeyNotFound
We only return `nil` when we know the person, but don't know the key or
the key is invalid, so it doesn't make sense to retry in this case. When
the person isn't known and can't be fetched we raise a DiscoveryError
which will be retried.

Also the errors were moved to the `Signable` module in the last release.

closes #7717
2018-02-25 04:34:04 +01:00

37 lines
1.6 KiB
Ruby

# frozen_string_literal: true
module Workers
class ReceiveBase < Base
sidekiq_options queue: :urgent
include Diaspora::Logging
# don't retry for errors that will fail again
def filter_errors_for_retry
yield
rescue DiasporaFederation::Entity::ValidationError,
DiasporaFederation::Parsers::BaseParser::InvalidRootNode,
DiasporaFederation::Entity::InvalidEntityName,
DiasporaFederation::Entity::UnknownEntity,
DiasporaFederation::Entities::Signable::PublicKeyNotFound,
DiasporaFederation::Entities::Signable::SignatureVerificationFailed,
DiasporaFederation::Entities::Participation::ParentNotLocal,
DiasporaFederation::Federation::Receiver::InvalidSender,
DiasporaFederation::Federation::Receiver::NotPublic,
DiasporaFederation::Salmon::SenderKeyNotFound,
DiasporaFederation::Salmon::InvalidEnvelope,
DiasporaFederation::Salmon::InvalidSignature,
DiasporaFederation::Salmon::InvalidDataType,
DiasporaFederation::Salmon::InvalidAlgorithm,
DiasporaFederation::Salmon::InvalidEncoding,
Diaspora::Federation::AuthorIgnored,
Diaspora::Federation::InvalidAuthor,
# TODO: deprecated
DiasporaFederation::Salmon::MissingMagicEnvelope,
DiasporaFederation::Salmon::MissingAuthor,
DiasporaFederation::Salmon::MissingHeader,
DiasporaFederation::Salmon::InvalidHeader => e
logger.warn "don't retry for error: #{e.class}"
end
end
end