diff --git a/app/jobs/upload_preprocessor_delayed_start_job.rb b/app/jobs/upload_preprocessor_delayed_start_job.rb new file mode 100644 index 000000000..fb2541822 --- /dev/null +++ b/app/jobs/upload_preprocessor_delayed_start_job.rb @@ -0,0 +1,8 @@ +class UploadPreprocessorDelayedStartJob < ApplicationJob + queue_as :default + queue_with_priority -1 + + def perform(source, referer_url, uploader) + UploadService::Preprocessor.new(source: source, referer_url: referer_url).delayed_start(uploader.id) + end +end diff --git a/app/jobs/upload_service_delayed_start_job.rb b/app/jobs/upload_service_delayed_start_job.rb new file mode 100644 index 000000000..916d9c2d3 --- /dev/null +++ b/app/jobs/upload_service_delayed_start_job.rb @@ -0,0 +1,8 @@ +class UploadServiceDelayedStartJob < ApplicationJob + queue_as :default + queue_with_priority -1 + + def perform(uploader) + UploadService.delayed_start(uploader.id) + end +end diff --git a/app/logical/upload_service.rb b/app/logical/upload_service.rb index 8e9b78847..a86e1bf4d 100644 --- a/app/logical/upload_service.rb +++ b/app/logical/upload_service.rb @@ -22,7 +22,7 @@ class UploadService preprocessor = Preprocessor.new(params) if preprocessor.in_progress? - delay(queue: "default", priority: -1, run_at: 5.seconds.from_now).delayed_start(CurrentUser.id) + UploadServiceDelayedStartJob.set(wait: 5.seconds).perform_later(CurrentUser.user) return preprocessor.predecessor end @@ -92,7 +92,7 @@ class UploadService upload.update(status: "completed", post_id: @post.id) if @post.is_pending? && Automod::UpdateDynamoDbJob.enabled? - Delayed::Job.enqueue(Automod::UpdateDynamoDbJob.new(@post.id), run_at: 84.hours.from_now, queue: "default") + #Delayed::Job.enqueue(Automod::UpdateDynamoDbJob.new(@post.id), run_at: 84.hours.from_now, queue: "default") end @post diff --git a/app/logical/upload_service/controller_helper.rb b/app/logical/upload_service/controller_helper.rb index 395d91684..d311ca19b 100644 --- a/app/logical/upload_service/controller_helper.rb +++ b/app/logical/upload_service/controller_helper.rb @@ -5,7 +5,7 @@ class UploadService if Utils.is_downloadable?(url) && file.nil? # this gets called from UploadsController#new so we need to preprocess async - Preprocessor.new(source: url, referer_url: ref).delay(priority: -1, queue: "default").delayed_start(CurrentUser.id) + UploadPreprocessorDelayedStartJob.perform_later(url, ref, CurrentUser.user) begin download = Downloads::File.new(url, ref) diff --git a/test/functional/post_replacements_controller_test.rb b/test/functional/post_replacements_controller_test.rb index 15780fd10..865e5e7f8 100644 --- a/test/functional/post_replacements_controller_test.rb +++ b/test/functional/post_replacements_controller_test.rb @@ -3,8 +3,6 @@ require 'test_helper' class PostReplacementsControllerTest < ActionDispatch::IntegrationTest context "The post replacements controller" do setup do - Delayed::Worker.delay_jobs = true # don't delete the old images right away - @user = create(:moderator_user, can_approve_posts: true, created_at: 1.month.ago) @user.as_current do @post = create(:post, source: "https://google.com") @@ -12,10 +10,6 @@ class PostReplacementsControllerTest < ActionDispatch::IntegrationTest end end - teardown do - Delayed::Worker.delay_jobs = false - end - context "create action" do should "render" do params = { @@ -31,9 +25,8 @@ class PostReplacementsControllerTest < ActionDispatch::IntegrationTest @post.reload end - travel(PostReplacement::DELETION_GRACE_PERIOD + 1.day) do - Delayed::Worker.new.work_off - end + travel(PostReplacement::DELETION_GRACE_PERIOD + 1.day) + perform_enqueued_jobs assert_response :success assert_equal("https://raikou1.donmai.us/d3/4e/d34e4cf0a437a5d65f8e82b7bcd02606.jpg", @post.source) diff --git a/test/functional/uploads_controller_test.rb b/test/functional/uploads_controller_test.rb index 6840684f1..8658257ea 100644 --- a/test/functional/uploads_controller_test.rb +++ b/test/functional/uploads_controller_test.rb @@ -37,7 +37,7 @@ class UploadsControllerTest < ActionDispatch::IntegrationTest file = Rack::Test::UploadedFile.new("#{Rails.root}/test/files/test.jpg", "image/jpeg") post_auth preprocess_uploads_path, @user, params: {:upload => {:source => "https://raikou1.donmai.us/d3/4e/d34e4cf0a437a5d65f8e82b7bcd02606.jpg", :file => file}} assert_response :success - Delayed::Worker.new.work_off + perform_enqueued_jobs assert_equal("ecef68c44edb8a0d6a3070b5f8e8ee76", Upload.last.md5) end end @@ -52,13 +52,14 @@ class UploadsControllerTest < ActionDispatch::IntegrationTest should "preprocess" do assert_difference(-> { Upload.count }) do get_auth new_upload_path, @user, params: {:url => "https://raikou1.donmai.us/d3/4e/d34e4cf0a437a5d65f8e82b7bcd02606.jpg"} + perform_enqueued_jobs assert_response :success end end should "prefer the file" do get_auth new_upload_path, @user, params: {url: "https://raikou1.donmai.us/d3/4e/d34e4cf0a437a5d65f8e82b7bcd02606.jpg"} - Delayed::Worker.new.work_off + perform_enqueued_jobs file = Rack::Test::UploadedFile.new("#{Rails.root}/test/files/test.jpg", "image/jpeg") assert_difference(-> { Post.count }) do post_auth uploads_path, @user, params: {upload: {file: file, tag_string: "aaa", rating: "q", source: "https://raikou1.donmai.us/d3/4e/d34e4cf0a437a5d65f8e82b7bcd02606.jpg"}} @@ -77,7 +78,7 @@ class UploadsControllerTest < ActionDispatch::IntegrationTest should "trigger the preprocessor" do assert_difference(-> { Upload.preprocessed.count }, 1) do get_auth new_upload_path, @user, params: {:url => @source, :ref => @ref} - Delayed::Worker.new.work_off + perform_enqueued_jobs end end end @@ -97,7 +98,7 @@ class UploadsControllerTest < ActionDispatch::IntegrationTest skip "Twitter keys are not set" unless Danbooru.config.twitter_api_key get_auth new_upload_path, @user, params: {:url => @source} assert_response :success - Delayed::Worker.new.work_off + perform_enqueued_jobs upload = Upload.last assert_equal(@source, upload.source) end @@ -112,7 +113,7 @@ class UploadsControllerTest < ActionDispatch::IntegrationTest should "trigger the preprocessor" do assert_difference(-> { Upload.preprocessed.count }, 1) do get_auth new_upload_path, @user, params: {:url => @source, :ref => @ref} - Delayed::Worker.new.work_off + perform_enqueued_jobs end end end diff --git a/test/models/upload_service_test.rb b/test/models/upload_service_test.rb index 7625d9c40..9d5c28a9b 100644 --- a/test/models/upload_service_test.rb +++ b/test/models/upload_service_test.rb @@ -14,14 +14,6 @@ class UploadServiceTest < ActiveSupport::TestCase } } - setup do - Delayed::Worker.delay_jobs = true - end - - teardown do - Delayed::Worker.delay_jobs = false - end - context "::Utils" do subject { UploadService::Utils } @@ -1044,10 +1036,9 @@ class UploadServiceTest < ActiveSupport::TestCase should "schedule a job later" do service = subject.new(source: @source) - assert_difference(-> { Delayed::Job.count }) do - predecessor = service.start! - assert_equal(@predecessor, predecessor) - end + predecessor = service.start! + assert_enqueued_jobs(1, only: UploadServiceDelayedStartJob) + assert_equal(@predecessor, predecessor) end end diff --git a/test/test_helper.rb b/test/test_helper.rb index 739db00d9..3205a89e5 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -122,6 +122,4 @@ class ActionDispatch::IntegrationTest end end -Delayed::Worker.delay_jobs = false - Rails.application.load_seed diff --git a/test/unit/post_test.rb b/test/unit/post_test.rb index f361d4308..bc727468c 100644 --- a/test/unit/post_test.rb +++ b/test/unit/post_test.rb @@ -36,17 +36,12 @@ class PostTest < ActiveSupport::TestCase context "Deletion:" do context "Expunging a post" do setup do - Delayed::Worker.delay_jobs = true @upload = UploadService.new(FactoryBot.attributes_for(:jpg_upload)).start! @post = @upload.post Favorite.add(post: @post, user: @user) create(:favorite_group).add!(@post.id) end - teardown do - Delayed::Worker.delay_jobs = false - end - should "delete the files" do assert_nothing_raised { @post.file(:preview) } assert_nothing_raised { @post.file(:original) }