34 lines
1.5 KiB
Ruby
34 lines
1.5 KiB
Ruby
module Workers
|
|
class ReceiveBase < Base
|
|
sidekiq_options queue: :receive
|
|
|
|
include Diaspora::Logging
|
|
|
|
# don't retry for errors that will fail again
|
|
def filter_errors_for_retry
|
|
yield
|
|
rescue DiasporaFederation::Entity::ValidationError,
|
|
DiasporaFederation::Entity::InvalidRootNode,
|
|
DiasporaFederation::Entity::InvalidEntityName,
|
|
DiasporaFederation::Entity::UnknownEntity,
|
|
DiasporaFederation::Entities::Relayable::SignatureVerificationFailed,
|
|
DiasporaFederation::Federation::Receiver::InvalidSender,
|
|
DiasporaFederation::Federation::Receiver::NotPublic,
|
|
DiasporaFederation::Salmon::SenderKeyNotFound,
|
|
DiasporaFederation::Salmon::InvalidEnvelope,
|
|
DiasporaFederation::Salmon::InvalidSignature,
|
|
DiasporaFederation::Salmon::InvalidAlgorithm,
|
|
DiasporaFederation::Salmon::InvalidEncoding,
|
|
Diaspora::Federation::AuthorIgnored,
|
|
# TODO: deprecated
|
|
DiasporaFederation::Salmon::MissingMagicEnvelope,
|
|
DiasporaFederation::Salmon::MissingAuthor,
|
|
DiasporaFederation::Salmon::MissingHeader,
|
|
DiasporaFederation::Salmon::InvalidHeader => e
|
|
logger.warn "don't retry for error: #{e.class}"
|
|
rescue ActiveRecord::RecordInvalid => e
|
|
logger.warn "failed to save received object: #{e.record.errors.full_messages}"
|
|
raise e unless e.message.include? "already been taken"
|
|
end
|
|
end
|
|
end
|