From 5cb96cd1a2964463dfcb6083da95badecccb7f98 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Mon, 15 Jul 2019 21:45:07 +0100 Subject: [PATCH] Send trace import result notification immediately If we delay sending failure notifications then they will fail because the trace will no longer exist. As trace imports are running in the background anyway there doesn't seem to be any good reason to defer the emails. Fixes #2312 --- app/jobs/trace_importer_job.rb | 6 +++--- test/jobs/trace_importer_job_test.rb | 18 +++--------------- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/app/jobs/trace_importer_job.rb b/app/jobs/trace_importer_job.rb index e4395bf3d..2a9a8678a 100644 --- a/app/jobs/trace_importer_job.rb +++ b/app/jobs/trace_importer_job.rb @@ -5,15 +5,15 @@ class TraceImporterJob < ApplicationJob gpx = trace.import if gpx.actual_points.positive? - Notifier.gpx_success(trace, gpx.actual_points).deliver_later + Notifier.gpx_success(trace, gpx.actual_points).deliver else - Notifier.gpx_failure(trace, "0 points parsed ok. Do they all have lat,lng,alt,timestamp?").deliver_later + Notifier.gpx_failure(trace, "0 points parsed ok. Do they all have lat,lng,alt,timestamp?").deliver trace.destroy end rescue StandardError => e logger.info e.to_s e.backtrace.each { |l| logger.info l } - Notifier.gpx_failure(trace, e.to_s + "\n" + e.backtrace.join("\n")).deliver_later + Notifier.gpx_failure(trace, e.to_s + "\n" + e.backtrace.join("\n")).deliver trace.destroy end end diff --git a/test/jobs/trace_importer_job_test.rb b/test/jobs/trace_importer_job_test.rb index bf30e6941..e1ddcc967 100644 --- a/test/jobs/trace_importer_job_test.rb +++ b/test/jobs/trace_importer_job_test.rb @@ -12,13 +12,9 @@ class TraceImporterJobTest < ActiveJob::TestCase end trace.stub(:import, gpx) do - perform_enqueued_jobs do - TraceImporterJob.perform_now(trace) - end + TraceImporterJob.perform_now(trace) end - assert_performed_jobs 1 - email = ActionMailer::Base.deliveries.last assert_equal trace.user.email, email.to[0] assert_match(/success/, email.subject) @@ -36,13 +32,9 @@ class TraceImporterJobTest < ActiveJob::TestCase end trace.stub(:import, gpx) do - perform_enqueued_jobs do - TraceImporterJob.perform_now(trace) - end + TraceImporterJob.perform_now(trace) end - assert_performed_jobs 1 - email = ActionMailer::Base.deliveries.last assert_equal trace.user.email, email.to[0] assert_match(/failure/, email.subject) @@ -54,13 +46,9 @@ class TraceImporterJobTest < ActiveJob::TestCase # Check that the user gets a failure notification when something goes badly wrong trace = create(:trace) trace.stub(:import, -> { raise }) do - perform_enqueued_jobs do - TraceImporterJob.perform_now(trace) - end + TraceImporterJob.perform_now(trace) end - assert_performed_jobs 1 - email = ActionMailer::Base.deliveries.last assert_equal trace.user.email, email.to[0] assert_match(/failure/, email.subject) -- 2.45.1