37 lines
1.5 KiB
Ruby
37 lines
1.5 KiB
Ruby
# Copyright (c) 2010-2011, Diaspora Inc. This file is
|
|
# licensed under the Affero General Public License version 3 or later. See
|
|
# the COPYRIGHT file.
|
|
|
|
module Workers
|
|
class Base
|
|
include Sidekiq::Worker
|
|
sidekiq_options backtrace: (bt = AppConfig.environment.sidekiq.backtrace.get) && bt.to_i,
|
|
retry: (rt = AppConfig.environment.sidekiq.retry.get) && rt.to_i
|
|
|
|
# In the long term we need to eliminate the cause of these
|
|
def suppress_annoying_errors(&block)
|
|
yield
|
|
rescue Diaspora::ContactRequiredUnlessRequest,
|
|
Diaspora::RelayableObjectWithoutParent,
|
|
# Friendica seems to provoke these
|
|
Diaspora::AuthorXMLAuthorMismatch,
|
|
# We received a private object to our public endpoint, again something
|
|
# Friendica seems to provoke
|
|
Diaspora::NonPublic => e
|
|
Rails.logger.info("error on receive: #{e.class}")
|
|
rescue ActiveRecord::RecordInvalid => e
|
|
Rails.logger.info("failed to save received object: #{e.record.errors.full_messages}")
|
|
raise e unless e.message.match(/already been taken/)
|
|
rescue ActiveRecord::RecordNotUnique => e
|
|
Rails.logger.info("failed to save received object: #{e.record.errors.full_messages}")
|
|
raise e unless %w(
|
|
index_comments_on_guid
|
|
index_likes_on_guid
|
|
index_posts_on_guid
|
|
"duplicate key in table 'comments'"
|
|
"duplicate key in table 'likes'"
|
|
"duplicate key in table 'posts'"
|
|
).any? {|index| e.message.include? index }
|
|
end
|
|
end
|
|
end
|