46 lines
1.1 KiB
Perl
46 lines
1.1 KiB
Perl
# 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 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;
|