Skip to content
Snippets Groups Projects
Commit 001c8cd0 authored by Stan Hu's avatar Stan Hu
Browse files

Gracefully handle SMTP user input errors (e.g. incorrect email addresses) to...

Gracefully handle SMTP user input errors (e.g. incorrect email addresses) to prevent Sidekiq retries

Closes https://github.com/gitlabhq/gitlabhq/issues/9560
parent 55fc58bd
Branches
Tags
1 merge request!1163Gracefully handle SMTP user input errors (e.g. incorrect email addresses) to prevent Sidekiq retries
Loading
@@ -6,6 +6,7 @@ v 8.0.0 (unreleased)
Loading
@@ -6,6 +6,7 @@ v 8.0.0 (unreleased)
- Faster merge - Faster merge
- Ability to fetch merge requests from refs/merge-requests/:id - Ability to fetch merge requests from refs/merge-requests/:id
- Allow displaying of archived projects in the admin interface (Artem Sidorenko) - Allow displaying of archived projects in the admin interface (Artem Sidorenko)
- Gracefully handle SMTP user input errors (e.g. incorrect email addresses) to prevent Sidekiq retries (Stan Hu)
   
v 7.14.0 (unreleased) v 7.14.0 (unreleased)
- Update default robots.txt rules to disallow crawling of irrelevant pages (Ben Bodenmiller) - Update default robots.txt rules to disallow crawling of irrelevant pages (Ben Bodenmiller)
Loading
Loading
Loading
@@ -42,6 +42,7 @@ class EmailsOnPushWorker
Loading
@@ -42,6 +42,7 @@ class EmailsOnPushWorker
end end
   
recipients.split(" ").each do |recipient| recipients.split(" ").each do |recipient|
begin
Notify.repository_push_email( Notify.repository_push_email(
project_id, project_id,
recipient, recipient,
Loading
@@ -53,6 +54,10 @@ class EmailsOnPushWorker
Loading
@@ -53,6 +54,10 @@ class EmailsOnPushWorker
send_from_committer_email: send_from_committer_email, send_from_committer_email: send_from_committer_email,
disable_diffs: disable_diffs disable_diffs: disable_diffs
).deliver ).deliver
# These are input errors and won't be corrected even if Sidekiq retries
rescue Net::SMTPFatalError, Net::SMTPSyntaxError => e
logger.info("Failed to send e-mail for project '#{project.name_with_namespace}' to #{recipient}: #{e}")
end
end end
ensure ensure
compare = nil compare = nil
Loading
Loading
require 'spec_helper'
describe EmailsOnPushWorker do
include RepoHelpers
let(:project) { create(:project) }
let(:user) { create(:user) }
let(:data) { Gitlab::PushDataBuilder.build_sample(project, user) }
subject { EmailsOnPushWorker.new }
before do
allow(Project).to receive(:find).and_return(project)
end
describe "#perform" do
it "sends mail" do
subject.perform(project.id, user.email, data.stringify_keys)
email = ActionMailer::Base.deliveries.last
expect(email.subject).to include('Change some files')
expect(email.to).to eq([user.email])
end
it "gracefully handles an input SMTP error" do
ActionMailer::Base.deliveries.clear
allow(Notify).to receive(:repository_push_email).and_raise(Net::SMTPFatalError)
subject.perform(project.id, user.email, data.stringify_keys)
expect(ActionMailer::Base.deliveries.count).to eq(0)
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment