| # This Source Code Form is subject to the terms of the Mozilla Public |
| # License, v. 2.0. If a copy of the MPL was not distributed with this |
| # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
| # |
| # This Source Code Form is "Incompatible With Secondary Licenses", as |
| # defined by the Mozilla Public License, v. 2.0. |
| |
| package Bugzilla::Job::Mailer; |
| |
| use 5.10.1; |
| use strict; |
| use warnings; |
| |
| use Bugzilla::Mailer; |
| BEGIN { eval "use parent qw(TheSchwartz::Worker)"; } |
| |
| # The longest we expect a job to possibly take, in seconds. |
| use constant grab_for => 300; |
| # We don't want email to fail permanently very easily. Retry for 30 days. |
| use constant max_retries => 725; |
| |
| # The first few retries happen quickly, but after that we wait an hour for |
| # each retry. |
| sub retry_delay { |
| my ($class, $num_retries) = @_; |
| if ($num_retries < 5) { |
| return (10, 30, 60, 300, 600)[$num_retries]; |
| } |
| # One hour |
| return 60*60; |
| } |
| |
| sub work { |
| my ($class, $job) = @_; |
| my $msg = $job->arg->{msg}; |
| my $success = eval { MessageToMTA($msg, 1); 1; }; |
| if (!$success) { |
| $job->failed($@); |
| undef $@; |
| } |
| else { |
| $job->completed; |
| } |
| } |
| |
| 1; |