From 06f8baf73c677303353c79609838caaeec3ccc9a Mon Sep 17 00:00:00 2001 From: George Claghorn Date: Sat, 28 Sep 2019 10:28:21 -0400 Subject: [PATCH] Discard ActiveStorage::AnalyzeJobs on ActiveRecord::RecordNotFound Fixes #37305. --- .../app/jobs/active_storage/analyze_job.rb | 1 + activestorage/test/jobs/analyze_job_test.rb | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 activestorage/test/jobs/analyze_job_test.rb diff --git a/activestorage/app/jobs/active_storage/analyze_job.rb b/activestorage/app/jobs/active_storage/analyze_job.rb index 35d043d508..890781dd7e 100644 --- a/activestorage/app/jobs/active_storage/analyze_job.rb +++ b/activestorage/app/jobs/active_storage/analyze_job.rb @@ -4,6 +4,7 @@ class ActiveStorage::AnalyzeJob < ActiveStorage::BaseJob queue_as { ActiveStorage.queues[:analysis] } + discard_on ActiveRecord::RecordNotFound retry_on ActiveStorage::IntegrityError, attempts: 10, wait: :exponentially_longer def perform(blob) diff --git a/activestorage/test/jobs/analyze_job_test.rb b/activestorage/test/jobs/analyze_job_test.rb new file mode 100644 index 0000000000..77cc016170 --- /dev/null +++ b/activestorage/test/jobs/analyze_job_test.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require "test_helper" +require "database/setup" + +class ActiveStorage::PurgeJobTest < ActiveJob::TestCase + setup { @blob = create_blob } + + test "ignores missing blob" do + @blob.purge + + perform_enqueued_jobs do + assert_nothing_raised do + ActiveStorage::AnalyzeJob.perform_later @blob + end + end + end +end