Skip to content

Commit

Permalink
Merge pull request #508 from slovensko-digital/GO-457/concurrent-draf…
Browse files Browse the repository at this point in the history
…t-submit

Prevent concurrent draft submit
  • Loading branch information
luciajanikova authored Nov 18, 2024
2 parents a777ed4 + 187c410 commit 5df6caf
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 0 deletions.
10 changes: 10 additions & 0 deletions app/jobs/fs/submit_message_draft_job.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,14 @@
class Fs::SubmitMessageDraftJob < ApplicationJob
include GoodJob::ActiveJobExtensions::Concurrency

good_job_control_concurrency_with(
# Maximum number of unfinished jobs to allow with the concurrency key
# Can be an Integer or Lambda/Proc that is invoked in the context of the job
total_limit: 1,

key: -> { "Fs::SubmitMessageDraftJob-#{arguments.first.try(:id)}" }
)

def perform(message_draft, bulk_submit: false, fs_client: FsEnvironment.fs_client)
raise "Invalid message!" unless message_draft.valid?(:validate_data)

Expand Down
10 changes: 10 additions & 0 deletions app/jobs/govbox/submit_message_draft_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,16 @@ class SubmissionError < StandardError
class TemporarySubmissionError < SubmissionError
end

include GoodJob::ActiveJobExtensions::Concurrency

good_job_control_concurrency_with(
# Maximum number of unfinished jobs to allow with the concurrency key
# Can be an Integer or Lambda/Proc that is invoked in the context of the job
total_limit: 1,

key: -> { "Govbox::SubmitMessageDraftJob-#{arguments.first.try(:id)}" }
)

retry_on TemporarySubmissionError, wait: 2.minutes, attempts: 5

retry_on SubmissionError, attempts: 1 do |_job, _error|
Expand Down

0 comments on commit 5df6caf

Please sign in to comment.