class TestJob < ActiveJob::Base
include GoodJob::ActiveJobExtensions::Concurrency
good_job_control_concurrency_with(total_limit: 1, key: { nil })
def perform
end
end
Stacktrace
```
NoMethodError: private method `_good_job_concurrency_key' called for #
/usr/local/bundle/gems/good_job-3.12.0/lib/good_job/active_job_extensions/concurrency.rb:99:in `good_job_enqueue_concurrency_check'
/usr/local/bundle/gems/good_job-3.12.0/lib/good_job/active_job_extensions/concurrency.rb:30:in `block (2 levels) in '
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:467:in `instance_exec'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:467:in `block in make_lambda'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:199:in `block (2 levels) in halting'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:687:in `block (2 levels) in default_terminator'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:686:in `catch'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:686:in `block in default_terminator'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:200:in `block in halting'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:595:in `block in invoke_before'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:595:in `each'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:595:in `invoke_before'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:116:in `block in run_callbacks'
/usr/local/bundle/gems/activejob-7.0.4.2/lib/active_job/instrumentation.rb:25:in `block in instrument'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/notifications.rb:206:in `block in instrument'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/notifications.rb:206:in `instrument'
/usr/local/bundle/gems/activejob-7.0.4.2/lib/active_job/instrumentation.rb:35:in `instrument'
/usr/local/bundle/gems/activejob-7.0.4.2/lib/active_job/instrumentation.rb:9:in `block (2 levels) in '
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:127:in `instance_exec'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:127:in `block in run_callbacks'
/usr/local/bundle/gems/activejob-7.0.4.2/lib/active_job/logging.rb:27:in `tag_logger'
/usr/local/bundle/gems/activejob-7.0.4.2/lib/active_job/logging.rb:14:in `block (2 levels) in '
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:127:in `instance_exec'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:127:in `block in run_callbacks'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:138:in `run_callbacks'
/usr/local/bundle/gems/activejob-7.0.4.2/lib/active_job/enqueuing.rb:63:in `enqueue'
/usr/local/bundle/gems/activejob-7.0.4.2/lib/active_job/enqueuing.rb:30:in `perform_later'
/app/app/models/submission_file.rb:123:in `update_variants_and_iqdb'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:400:in `block in make_lambda'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:261:in `block in conditional'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:599:in `block in invoke_after'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:599:in `each'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:599:in `invoke_after'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:108:in `run_callbacks'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:929:in `_run_commit_callbacks'
/usr/local/bundle/gems/activerecord-7.0.4.2/lib/active_record/transactions.rb:321:in `committed!'
/usr/local/bundle/gems/activerecord-7.0.4.2/lib/active_record/connection_adapters/abstract/transaction.rb:155:in `commit_records'
/usr/local/bundle/gems/activerecord-7.0.4.2/lib/active_record/connection_adapters/abstract/transaction.rb:304:in `block in commit_transaction'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/usr/local/bundle/gems/activerecord-7.0.4.2/lib/active_record/connection_adapters/abstract/transaction.rb:294:in `commit_transaction'
/usr/local/bundle/gems/activerecord-7.0.4.2/lib/active_record/connection_adapters/abstract/transaction.rb:345:in `block in within_new_transaction'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/usr/local/bundle/gems/activerecord-7.0.4.2/lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'
/usr/local/bundle/gems/activerecord-7.0.4.2/lib/active_record/connection_adapters/abstract/database_statements.rb:316:in `transaction'
/usr/local/bundle/gems/activerecord-7.0.4.2/lib/active_record/transactions.rb:350:in `with_transaction_returning_status'
/usr/local/bundle/gems/activerecord-7.0.4.2/lib/active_record/transactions.rb:302:in `save!'
/usr/local/bundle/gems/activerecord-7.0.4.2/lib/active_record/suppressor.rb:54:in `save!'
/app/app/models/submission_file.rb:105:in `attach_original_from_blob!'
/app/app/models/submission_file.rb:85:in `attach_original_from_file!'
/app/test/factories/submission_file_factory.rb:24:in `block (4 levels) in '
/usr/local/bundle/gems/factory_bot-6.2.1/lib/factory_bot/callback.rb:13:in `instance_exec'
/usr/local/bundle/gems/factory_bot-6.2.1/lib/factory_bot/callback.rb:13:in `run'
/usr/local/bundle/gems/factory_bot-6.2.1/lib/factory_bot/callbacks_observer.rb:11:in `block in update'
/usr/local/bundle/gems/factory_bot-6.2.1/lib/factory_bot/callbacks_observer.rb:10:in `each'
/usr/local/bundle/gems/factory_bot-6.2.1/lib/factory_bot/callbacks_observer.rb:10:in `update'
/usr/local/lib/ruby/3.2.0/observer.rb:222:in `block in notify_observers'
/usr/local/lib/ruby/3.2.0/observer.rb:221:in `each'
/usr/local/lib/ruby/3.2.0/observer.rb:221:in `notify_observers'
/usr/local/bundle/gems/factory_bot-6.2.1/lib/factory_bot/evaluation.rb:24:in `notify'
/usr/local/bundle/gems/factory_bot-6.2.1/lib/factory_bot/strategy/create.rb:11:in `block in result'
:90:in `tap'
/usr/local/bundle/gems/factory_bot-6.2.1/lib/factory_bot/strategy/create.rb:9:in `result'
/usr/local/bundle/gems/factory_bot-6.2.1/lib/factory_bot/factory.rb:43:in `run'
/usr/local/bundle/gems/factory_bot-6.2.1/lib/factory_bot/factory_runner.rb:29:in `block in run'
/usr/local/bundle/gems/activesupport-7.0.4.2/lib/active_support/notifications.rb:208:in `instrument'
/usr/local/bundle/gems/factory_bot-6.2.1/lib/factory_bot/factory_runner.rb:28:in `run'
/usr/local/bundle/gems/factory_bot-6.2.1/lib/factory_bot/strategy_syntax_method_registrar.rb:28:in `block in define_singular_strategy_method'
/app/test/model/submission_file_test.rb:13:in `block (2 levels) in '
```
As the title says. I presume this commit is at fault: https://github.com/bensheldon/good_job/commit/21993d4cd3aa65db73cb8c8e6d02a88d015e88f8. This is also the case if you simple don't specify
good_job_control_concurrency_with
, which is how I stumbled across this.Repro job:
Stacktrace
``` NoMethodError: private method `_good_job_concurrency_key' called for #