Skip to content

Commit 41a63f5

Browse files
committed
Don't have a default key for concurrency controls, force always a choice there
This is less surprising and helps making it clear what the key is.
1 parent 427482e commit 41a63f5

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

lib/active_job/concurrency_controls.rb

+4-5
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,22 @@ module ActiveJob
44
module ConcurrencyControls
55
extend ActiveSupport::Concern
66

7-
DEFAULT_CONCURRENCY_KEY = ->(*args) { args&.first }
87
DEFAULT_CONCURRENCY_GROUP = ->(*) { self.class.name }
98

109
included do
11-
class_attribute :concurrency_key, default: DEFAULT_CONCURRENCY_KEY, instance_accessor: false
10+
class_attribute :concurrency_key, instance_accessor: false
1211
class_attribute :concurrency_group, default: DEFAULT_CONCURRENCY_GROUP, instance_accessor: false
1312

1413
class_attribute :concurrency_limit, default: 0 # No limit
1514
class_attribute :concurrency_duration, default: SolidQueue.default_concurrency_control_period
1615
end
1716

1817
class_methods do
19-
def limits_concurrency(to: 1, key: DEFAULT_CONCURRENCY_KEY, group: DEFAULT_CONCURRENCY_GROUP, duration: SolidQueue.default_concurrency_control_period)
20-
self.concurrency_limit = to
18+
def limits_concurrency(key:, to: 1, group: DEFAULT_CONCURRENCY_GROUP, duration: SolidQueue.default_concurrency_control_period)
2119
self.concurrency_key = key
22-
self.concurrency_duration = duration
20+
self.concurrency_limit = to
2321
self.concurrency_group = group
22+
self.concurrency_duration = duration
2423
end
2524
end
2625

test/models/solid_queue/job_test.rb

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@
22

33
class SolidQueue::JobTest < ActiveSupport::TestCase
44
class NonOverlappingJob < ApplicationJob
5-
limits_concurrency # Using all defaults
5+
limits_concurrency key: ->(job_result) { job_result }
66

77
def perform(job_result)
88
end
99
end
1010

1111
class NonOverlappingGroupedJob1 < NonOverlappingJob
12-
limits_concurrency group: "MyGroup"
12+
limits_concurrency key: ->(job_result) { job_result }, group: "MyGroup"
1313
end
1414

1515
class NonOverlappingGroupedJob2 < NonOverlappingJob
16-
limits_concurrency group: "MyGroup"
16+
limits_concurrency key: ->(job_result) { job_result }, group: "MyGroup"
1717
end
1818

1919
setup do

0 commit comments

Comments
 (0)