Content
View differences
Updated by Judith Roth 13 days ago
### Steps to reproduce
Not reproducible on the GUI. You need to add conflicting entries Sorry, I don't know how I got here in detail :)
I can't even see which project is the `FriendlyId::Slug` manually (see my comment). problematic one.
### What is the buggy behavior?
When switching back from "Project-based semantic identifiers" to "Instance-wide numerical sequence (default)", I got stuck on an validation error. For a user who does not have access to the rails console, it looks like the process hangs and there is nothing the user can do to resume the conversion.
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/921183/content">
From my logs I can see that I ran into an `ActiveRecord::RecordInvalid: Validation failed: Identifier has already been taken.` error. I needed to manually discard the stuck job. (And restarting the conversion lead to the same problem again)
This should not happen in production for customers.
### What is the expected behavior?
When an validation error happens, a unique fallback different identifier needs to be chosen and used without breaking the job. Also the reason for that should go to the error log. job
###
### **Logs**
```text
worker | GoodJob::Execution Update (4.7ms) UPDATE "good_job_executions" SET "updated_at" = $1, "finished_at" = $2, "error" = $3, "error_event" = $4, "error_backtrace" = $5, "duration" = $6 WHERE "good_job_executions"."id" = $7 [["updated_at", "2026-05-19 13:07:43.666137"], ["finished_at", "2026-05-19 13:07:43.665681"], ["error", "ActiveRecord::RecordInvalid: Validation failed: Identifier has already been taken."], ["error_event", 3], ["error_backtrace", "{\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/validations.rb:87:in 'ActiveRecord::Validations#raise_validation_error'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/validations.rb:54:in 'ActiveRecord::Validations#save!'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/transactions.rb:385:in 'block in ActiveRecord::Transactions#save!'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/transactions.rb:438:in 'block (3 levels) in ActiveRecord::Transactions#with_transaction_returning_status'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_adapters/abstract/database_statements.rb:376:in 'ActiveRecord::ConnectionAdapters::DatabaseStatements#transaction'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/transactions.rb:434:in 'block (2 levels) in ActiveRecord::Transactions#with_transaction_returning_status'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:485:in 'ActiveRecord::ConnectionAdapters::ConnectionPool#with_pool_transaction_isolation_level'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/transactions.rb:430:in 'block in ActiveRecord::Transactions#with_transaction_returning_status'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:457:in 'ActiveRecord::ConnectionAdapters::ConnectionPool#with_connection'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_handling.rb:313:in 'ActiveRecord::ConnectionHandling#with_connection'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/transactions.rb:429:in 'ActiveRecord::Transactions#with_transaction_returning_status'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/transactions.rb:385:in 'ActiveRecord::Transactions#save!'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/suppressor.rb:56:in 'ActiveRecord::Suppressor#save!'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/persistence.rb:580:in 'block in ActiveRecord::Persistence#update!'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/transactions.rb:438:in 'block (3 levels) in ActiveRecord::Transactions#with_transaction_returning_status'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_adapters/abstract/transaction.rb:648:in 'block in ActiveRecord::ConnectionAdapters::TransactionManager#within_new_transaction'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/concurrency/null_lock.rb:9:in 'ActiveSupport::Concurrency::NullLock#synchronize'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_adapters/abstract/transaction.rb:645:in 'ActiveRecord::ConnectionAdapters::TransactionManager#within_new_transaction'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_adapters/abstract/database_statements.rb:386:in 'ActiveRecord::ConnectionAdapters::DatabaseStatements#within_new_transaction'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_adapters/abstract/database_statements.rb:378:in 'ActiveRecord::ConnectionAdapters::DatabaseStatements#transaction'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/transactions.rb:434:in 'block (2 levels) in ActiveRecord::Transactions#with_transaction_returning_status'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:485:in 'ActiveRecord::ConnectionAdapters::ConnectionPool#with_pool_transaction_isolation_level'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/transactions.rb:430:in 'block in ActiveRecord::Transactions#with_transaction_returning_status'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:457:in 'ActiveRecord::ConnectionAdapters::ConnectionPool#with_connection'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_handling.rb:313:in 'ActiveRecord::ConnectionHandling#with_connection'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/transactions.rb:429:in 'ActiveRecord::Transactions#with_transaction_returning_status'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/persistence.rb:578:in 'ActiveRecord::Persistence#update!'\",\"/home/judith/development/openproject-local/app/services/project_identifiers/revert_project_to_classic_service.rb:58:in 'block in ProjectIdentifiers::RevertProjectToClassicService#restore_classic_identifier'\",\"/home/judith/development/openproject-local/app/models/journal/notification_configuration.rb:64:in 'Journal::NotificationConfiguration.with_first'\",\"/home/judith/development/openproject-local/app/models/journal/notification_configuration.rb:47:in 'Journal::NotificationConfiguration.with'\",\"/home/judith/development/openproject-local/app/services/project_identifiers/revert_project_to_classic_service.rb:57:in 'ProjectIdentifiers::RevertProjectToClassicService#restore_classic_identifier'\",\"/home/judith/development/openproject-local/app/services/project_identifiers/revert_project_to_classic_service.rb:46:in 'ProjectIdentifiers::RevertProjectToClassicService#call'\",\"/home/judith/development/openproject-local/app/workers/project_identifiers/revert_instance_to_classic_ids_job.rb:49:in 'block in ProjectIdentifiers::RevertInstanceToClassicIdsJob#perform'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/batches.rb:88:in 'Array#each'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/batches.rb:88:in 'block in ActiveRecord::Batches#find_each'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/batches.rb:172:in 'block in ActiveRecord::Batches#find_in_batches'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/batches.rb:475:in 'block in ActiveRecord::Batches#batch_on_unloaded_relation'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/batches.rb:434:in 'Kernel#loop'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/batches.rb:434:in 'ActiveRecord::Batches#batch_on_unloaded_relation'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/batches.rb:289:in 'ActiveRecord::Batches#in_batches'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/batches.rb:171:in 'ActiveRecord::Batches#find_in_batches'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/batches.rb:87:in 'ActiveRecord::Batches#find_each'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/querying.rb:24:in 'ActiveRecord::Querying#find_each'\",\"/home/judith/development/openproject-local/app/workers/project_identifiers/revert_instance_to_classic_ids_job.rb:46:in 'ProjectIdentifiers::RevertInstanceToClassicIdsJob#perform'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/execution.rb:68:in 'block in ActiveJob::Execution#_perform_job'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:121:in 'block in ActiveSupport::Callbacks#run_callbacks'\",\"/home/judith/development/openproject-local/app/workers/shared_job_setup.rb:59:in 'block in SharedJobSetup#prepare_job_context'\",\"/home/judith/development/openproject-local/app/workers/shared_job_setup.rb:76:in 'SharedJobSetup#with_clean_request_store'\",\"/home/judith/development/openproject-local/app/workers/shared_job_setup.rb:55:in 'SharedJobSetup#prepare_job_context'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:141:in 'ActiveSupport::Callbacks#run_callbacks'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/execution.rb:67:in 'ActiveJob::Execution#_perform_job'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/instrumentation.rb:44:in 'ActiveJob::Instrumentation#_perform_job'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/execution.rb:51:in 'ActiveJob::Execution#perform_now'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/instrumentation.rb:26:in 'block in ActiveJob::Instrumentation#perform_now'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/railties/job_runtime.rb:12:in 'block in ActiveRecord::Railties::JobRuntime#instrument'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/instrumentation.rb:34:in 'block in ActiveJob::Instrumentation#instrument'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/notifications.rb:210:in 'block in ActiveSupport::Notifications.instrument'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/notifications/instrumenter.rb:58:in 'ActiveSupport::Notifications::Instrumenter#instrument'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/notifications.rb:210:in 'ActiveSupport::Notifications.instrument'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/instrumentation.rb:33:in 'ActiveJob::Instrumentation#instrument'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/railties/job_runtime.rb:10:in 'ActiveRecord::Railties::JobRuntime#instrument'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/instrumentation.rb:26:in 'ActiveJob::Instrumentation#perform_now'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/logging.rb:32:in 'block in ActiveJob::Logging#perform_now'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/tagged_logging.rb:143:in 'block in ActiveSupport::TaggedLogging#tagged'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/tagged_logging.rb:38:in 'ActiveSupport::TaggedLogging::Formatter#tagged'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/tagged_logging.rb:143:in 'ActiveSupport::TaggedLogging#tagged'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/broadcast_logger.rb:228:in 'ActiveSupport::BroadcastLogger#method_missing'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/logging.rb:39:in 'ActiveJob::Logging#tag_logger'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/logging.rb:32:in 'ActiveJob::Logging#perform_now'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/execution_state.rb:7:in 'block (2 levels) in ActiveJob::ExecutionState#perform_now'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/core_ext/time/zones.rb:65:in 'Time.use_zone'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/execution_state.rb:7:in 'block in ActiveJob::ExecutionState#perform_now'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/i18n-1.14.8/lib/i18n.rb:354:in 'I18n::Base#with_locale'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/execution_state.rb:6:in 'ActiveJob::ExecutionState#perform_now'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/execution.rb:29:in 'block in ActiveJob::Execution::ClassMethods#execute'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:121:in 'block in ActiveSupport::Callbacks#run_callbacks'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/railtie.rb:86:in 'block (4 levels) in <class:Railtie>'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/reloader.rb:77:in 'block in ActiveSupport::Reloader.wrap'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/execution_wrapper.rb:87:in 'ActiveSupport::ExecutionWrapper.wrap'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/reloader.rb:74:in 'ActiveSupport::Reloader.wrap'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/railtie.rb:85:in 'block (3 levels) in <class:Railtie>'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:130:in 'BasicObject#instance_exec'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:141:in 'ActiveSupport::Callbacks#run_callbacks'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/execution.rb:27:in 'ActiveJob::Execution::ClassMethods#execute'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/job.rb:812:in 'block (3 levels) in GoodJob::Job#perform'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/notifications.rb:210:in 'block in ActiveSupport::Notifications.instrument'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/notifications/instrumenter.rb:58:in 'ActiveSupport::Notifications::Instrumenter#instrument'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/notifications.rb:210:in 'ActiveSupport::Notifications.instrument'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/job.rb:811:in 'block (2 levels) in GoodJob::Job#perform'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/lib/good_job/current_thread.rb:120:in 'GoodJob::CurrentThread.within'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/job.rb:766:in 'block in GoodJob::Job#perform'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:121:in 'block in ActiveSupport::Callbacks#run_callbacks'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/batch.rb:208:in 'GoodJob::Batch.within_thread'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/job.rb:973:in 'GoodJob::Job#reset_batch_values'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:141:in 'ActiveSupport::Callbacks#run_callbacks'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/job.rb:760:in 'GoodJob::Job#perform'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/job.rb:391:in 'block in GoodJob::Job.perform_with_advisory_lock'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/job/lockable.rb:26:in 'block in GoodJob::Job::Lockable::ClassMethods#with_advisory_lock_claim'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/concerns/good_job/advisory_lockable.rb:339:in 'block (2 levels) in GoodJob::AdvisoryLockable::ClassMethods#advisory_lock'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation.rb:1393:in 'ActiveRecord::Relation#_scoping'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation.rb:558:in 'ActiveRecord::Relation#scoping'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/scoping/default.rb:51:in 'ActiveRecord::Scoping::Default::ClassMethods#unscoped'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/concerns/good_job/advisory_lockable.rb:339:in 'block in GoodJob::AdvisoryLockable::ClassMethods#advisory_lock'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:463:in 'ActiveRecord::ConnectionAdapters::ConnectionPool#with_connection'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/concerns/good_job/advisory_lockable.rb:334:in 'GoodJob::AdvisoryLockable::ClassMethods#advisory_lock'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/job/lockable.rb:23:in 'GoodJob::Job::Lockable::ClassMethods#with_advisory_lock_claim'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/delegation.rb:80:in 'block in GoodJob::Job::GeneratedRelationMethods#with_advisory_lock_claim'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation.rb:1393:in 'ActiveRecord::Relation#_scoping'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation.rb:558:in 'ActiveRecord::Relation#scoping'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/delegation.rb:80:in 'GoodJob::Job::GeneratedRelationMethods#with_advisory_lock_claim'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/job.rb:388:in 'GoodJob::Job.perform_with_advisory_lock'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/job.rb:409:in 'GoodJob::Job.perform_with_lock'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/delegation.rb:80:in 'block in GoodJob::Job::GeneratedRelationMethods#perform_with_lock'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation.rb:1393:in 'ActiveRecord::Relation#_scoping'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation.rb:558:in 'ActiveRecord::Relation#scoping'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/delegation.rb:80:in 'GoodJob::Job::GeneratedRelationMethods#perform_with_lock'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/lib/good_job/job_performer.rb:35:in 'block in GoodJob::JobPerformer#next'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/lib/good_job/capsule_tracker.rb:94:in 'GoodJob::CapsuleTracker#register'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/lib/good_job/job_performer.rb:34:in 'GoodJob::JobPerformer#next'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/lib/good_job/scheduler.rb:289:in 'block (2 levels) in GoodJob::Scheduler#create_task'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/reloader.rb:77:in 'block in ActiveSupport::Reloader.wrap'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/execution_wrapper.rb:91:in 'ActiveSupport::ExecutionWrapper.wrap'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/reloader.rb:74:in 'ActiveSupport::Reloader.wrap'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/lib/good_job/scheduler.rb:288:in 'block in GoodJob::Scheduler#create_task'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/safe_task_executor.rb:24:in 'block in Concurrent::SafeTaskExecutor#execute'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb:48:in 'block in Concurrent::Synchronization::MutexLockableObject#synchronize'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb:48:in 'Thread::Mutex#synchronize'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb:48:in 'Concurrent::Synchronization::MutexLockableObject#synchronize'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/safe_task_executor.rb:22:in 'Concurrent::SafeTaskExecutor#execute'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/ivar.rb:170:in 'Concurrent::IVar#safe_execute'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/scheduled_task.rb:298:in 'Concurrent::ScheduledTask#process_task'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/timer_set.rb:169:in 'block (2 levels) in Concurrent::TimerSet#process_tasks'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:382:in 'Concurrent::RubyThreadPoolExecutor::Worker#run_task'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:372:in 'block (3 levels) in Concurrent::RubyThreadPoolExecutor::Worker#create_worker'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:361:in 'Kernel#loop'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:361:in 'block (2 levels) in Concurrent::RubyThreadPoolExecutor::Worker#create_worker'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:358:in 'Kernel#catch'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:358:in 'block in Concurrent::RubyThreadPoolExecutor::Worker#create_worker'\"}"], ["duration", "PT0.08380344100442016S"], ["id", "0f0a55e1-564c-4c2f-9d84-b3f3bff142e4"]]
```
### Screenshots and other files
see above
### Environment information
**OpenProject version**
_dev_
Not reproducible on the GUI. You need to add conflicting entries
I can't even see which project is
### What is the buggy behavior?
When switching back from "Project-based semantic identifiers" to "Instance-wide numerical sequence (default)", I got stuck on an validation error. For a user who does not have access to the rails console, it looks like the process hangs and there is nothing the user can do to resume the conversion.
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/921183/content">
From my logs I can see that I ran into an `ActiveRecord::RecordInvalid: Validation failed: Identifier has already been taken.` error. I needed to manually discard the stuck job. (And restarting the conversion lead to the same problem again)
This should not happen in production for customers.
### What is the expected behavior?
When an validation error happens, a unique fallback
###
### **Logs**
```text
worker | GoodJob::Execution Update (4.7ms) UPDATE "good_job_executions" SET "updated_at" = $1, "finished_at" = $2, "error" = $3, "error_event" = $4, "error_backtrace" = $5, "duration" = $6 WHERE "good_job_executions"."id" = $7 [["updated_at", "2026-05-19 13:07:43.666137"], ["finished_at", "2026-05-19 13:07:43.665681"], ["error", "ActiveRecord::RecordInvalid: Validation failed: Identifier has already been taken."], ["error_event", 3], ["error_backtrace", "{\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/validations.rb:87:in 'ActiveRecord::Validations#raise_validation_error'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/validations.rb:54:in 'ActiveRecord::Validations#save!'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/transactions.rb:385:in 'block in ActiveRecord::Transactions#save!'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/transactions.rb:438:in 'block (3 levels) in ActiveRecord::Transactions#with_transaction_returning_status'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_adapters/abstract/database_statements.rb:376:in 'ActiveRecord::ConnectionAdapters::DatabaseStatements#transaction'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/transactions.rb:434:in 'block (2 levels) in ActiveRecord::Transactions#with_transaction_returning_status'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:485:in 'ActiveRecord::ConnectionAdapters::ConnectionPool#with_pool_transaction_isolation_level'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/transactions.rb:430:in 'block in ActiveRecord::Transactions#with_transaction_returning_status'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:457:in 'ActiveRecord::ConnectionAdapters::ConnectionPool#with_connection'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_handling.rb:313:in 'ActiveRecord::ConnectionHandling#with_connection'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/transactions.rb:429:in 'ActiveRecord::Transactions#with_transaction_returning_status'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/transactions.rb:385:in 'ActiveRecord::Transactions#save!'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/suppressor.rb:56:in 'ActiveRecord::Suppressor#save!'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/persistence.rb:580:in 'block in ActiveRecord::Persistence#update!'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/transactions.rb:438:in 'block (3 levels) in ActiveRecord::Transactions#with_transaction_returning_status'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_adapters/abstract/transaction.rb:648:in 'block in ActiveRecord::ConnectionAdapters::TransactionManager#within_new_transaction'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/concurrency/null_lock.rb:9:in 'ActiveSupport::Concurrency::NullLock#synchronize'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_adapters/abstract/transaction.rb:645:in 'ActiveRecord::ConnectionAdapters::TransactionManager#within_new_transaction'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_adapters/abstract/database_statements.rb:386:in 'ActiveRecord::ConnectionAdapters::DatabaseStatements#within_new_transaction'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_adapters/abstract/database_statements.rb:378:in 'ActiveRecord::ConnectionAdapters::DatabaseStatements#transaction'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/transactions.rb:434:in 'block (2 levels) in ActiveRecord::Transactions#with_transaction_returning_status'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:485:in 'ActiveRecord::ConnectionAdapters::ConnectionPool#with_pool_transaction_isolation_level'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/transactions.rb:430:in 'block in ActiveRecord::Transactions#with_transaction_returning_status'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:457:in 'ActiveRecord::ConnectionAdapters::ConnectionPool#with_connection'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_handling.rb:313:in 'ActiveRecord::ConnectionHandling#with_connection'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/transactions.rb:429:in 'ActiveRecord::Transactions#with_transaction_returning_status'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/persistence.rb:578:in 'ActiveRecord::Persistence#update!'\",\"/home/judith/development/openproject-local/app/services/project_identifiers/revert_project_to_classic_service.rb:58:in 'block in ProjectIdentifiers::RevertProjectToClassicService#restore_classic_identifier'\",\"/home/judith/development/openproject-local/app/models/journal/notification_configuration.rb:64:in 'Journal::NotificationConfiguration.with_first'\",\"/home/judith/development/openproject-local/app/models/journal/notification_configuration.rb:47:in 'Journal::NotificationConfiguration.with'\",\"/home/judith/development/openproject-local/app/services/project_identifiers/revert_project_to_classic_service.rb:57:in 'ProjectIdentifiers::RevertProjectToClassicService#restore_classic_identifier'\",\"/home/judith/development/openproject-local/app/services/project_identifiers/revert_project_to_classic_service.rb:46:in 'ProjectIdentifiers::RevertProjectToClassicService#call'\",\"/home/judith/development/openproject-local/app/workers/project_identifiers/revert_instance_to_classic_ids_job.rb:49:in 'block in ProjectIdentifiers::RevertInstanceToClassicIdsJob#perform'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/batches.rb:88:in 'Array#each'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/batches.rb:88:in 'block in ActiveRecord::Batches#find_each'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/batches.rb:172:in 'block in ActiveRecord::Batches#find_in_batches'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/batches.rb:475:in 'block in ActiveRecord::Batches#batch_on_unloaded_relation'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/batches.rb:434:in 'Kernel#loop'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/batches.rb:434:in 'ActiveRecord::Batches#batch_on_unloaded_relation'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/batches.rb:289:in 'ActiveRecord::Batches#in_batches'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/batches.rb:171:in 'ActiveRecord::Batches#find_in_batches'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/batches.rb:87:in 'ActiveRecord::Batches#find_each'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/querying.rb:24:in 'ActiveRecord::Querying#find_each'\",\"/home/judith/development/openproject-local/app/workers/project_identifiers/revert_instance_to_classic_ids_job.rb:46:in 'ProjectIdentifiers::RevertInstanceToClassicIdsJob#perform'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/execution.rb:68:in 'block in ActiveJob::Execution#_perform_job'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:121:in 'block in ActiveSupport::Callbacks#run_callbacks'\",\"/home/judith/development/openproject-local/app/workers/shared_job_setup.rb:59:in 'block in SharedJobSetup#prepare_job_context'\",\"/home/judith/development/openproject-local/app/workers/shared_job_setup.rb:76:in 'SharedJobSetup#with_clean_request_store'\",\"/home/judith/development/openproject-local/app/workers/shared_job_setup.rb:55:in 'SharedJobSetup#prepare_job_context'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:141:in 'ActiveSupport::Callbacks#run_callbacks'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/execution.rb:67:in 'ActiveJob::Execution#_perform_job'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/instrumentation.rb:44:in 'ActiveJob::Instrumentation#_perform_job'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/execution.rb:51:in 'ActiveJob::Execution#perform_now'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/instrumentation.rb:26:in 'block in ActiveJob::Instrumentation#perform_now'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/railties/job_runtime.rb:12:in 'block in ActiveRecord::Railties::JobRuntime#instrument'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/instrumentation.rb:34:in 'block in ActiveJob::Instrumentation#instrument'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/notifications.rb:210:in 'block in ActiveSupport::Notifications.instrument'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/notifications/instrumenter.rb:58:in 'ActiveSupport::Notifications::Instrumenter#instrument'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/notifications.rb:210:in 'ActiveSupport::Notifications.instrument'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/instrumentation.rb:33:in 'ActiveJob::Instrumentation#instrument'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/railties/job_runtime.rb:10:in 'ActiveRecord::Railties::JobRuntime#instrument'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/instrumentation.rb:26:in 'ActiveJob::Instrumentation#perform_now'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/logging.rb:32:in 'block in ActiveJob::Logging#perform_now'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/tagged_logging.rb:143:in 'block in ActiveSupport::TaggedLogging#tagged'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/tagged_logging.rb:38:in 'ActiveSupport::TaggedLogging::Formatter#tagged'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/tagged_logging.rb:143:in 'ActiveSupport::TaggedLogging#tagged'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/broadcast_logger.rb:228:in 'ActiveSupport::BroadcastLogger#method_missing'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/logging.rb:39:in 'ActiveJob::Logging#tag_logger'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/logging.rb:32:in 'ActiveJob::Logging#perform_now'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/execution_state.rb:7:in 'block (2 levels) in ActiveJob::ExecutionState#perform_now'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/core_ext/time/zones.rb:65:in 'Time.use_zone'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/execution_state.rb:7:in 'block in ActiveJob::ExecutionState#perform_now'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/i18n-1.14.8/lib/i18n.rb:354:in 'I18n::Base#with_locale'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/execution_state.rb:6:in 'ActiveJob::ExecutionState#perform_now'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/execution.rb:29:in 'block in ActiveJob::Execution::ClassMethods#execute'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:121:in 'block in ActiveSupport::Callbacks#run_callbacks'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/railtie.rb:86:in 'block (4 levels) in <class:Railtie>'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/reloader.rb:77:in 'block in ActiveSupport::Reloader.wrap'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/execution_wrapper.rb:87:in 'ActiveSupport::ExecutionWrapper.wrap'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/reloader.rb:74:in 'ActiveSupport::Reloader.wrap'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/railtie.rb:85:in 'block (3 levels) in <class:Railtie>'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:130:in 'BasicObject#instance_exec'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:141:in 'ActiveSupport::Callbacks#run_callbacks'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activejob-8.1.3/lib/active_job/execution.rb:27:in 'ActiveJob::Execution::ClassMethods#execute'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/job.rb:812:in 'block (3 levels) in GoodJob::Job#perform'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/notifications.rb:210:in 'block in ActiveSupport::Notifications.instrument'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/notifications/instrumenter.rb:58:in 'ActiveSupport::Notifications::Instrumenter#instrument'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/notifications.rb:210:in 'ActiveSupport::Notifications.instrument'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/job.rb:811:in 'block (2 levels) in GoodJob::Job#perform'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/lib/good_job/current_thread.rb:120:in 'GoodJob::CurrentThread.within'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/job.rb:766:in 'block in GoodJob::Job#perform'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:121:in 'block in ActiveSupport::Callbacks#run_callbacks'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/batch.rb:208:in 'GoodJob::Batch.within_thread'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/job.rb:973:in 'GoodJob::Job#reset_batch_values'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/callbacks.rb:141:in 'ActiveSupport::Callbacks#run_callbacks'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/job.rb:760:in 'GoodJob::Job#perform'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/job.rb:391:in 'block in GoodJob::Job.perform_with_advisory_lock'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/job/lockable.rb:26:in 'block in GoodJob::Job::Lockable::ClassMethods#with_advisory_lock_claim'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/concerns/good_job/advisory_lockable.rb:339:in 'block (2 levels) in GoodJob::AdvisoryLockable::ClassMethods#advisory_lock'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation.rb:1393:in 'ActiveRecord::Relation#_scoping'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation.rb:558:in 'ActiveRecord::Relation#scoping'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/scoping/default.rb:51:in 'ActiveRecord::Scoping::Default::ClassMethods#unscoped'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/concerns/good_job/advisory_lockable.rb:339:in 'block in GoodJob::AdvisoryLockable::ClassMethods#advisory_lock'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:463:in 'ActiveRecord::ConnectionAdapters::ConnectionPool#with_connection'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/concerns/good_job/advisory_lockable.rb:334:in 'GoodJob::AdvisoryLockable::ClassMethods#advisory_lock'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/job/lockable.rb:23:in 'GoodJob::Job::Lockable::ClassMethods#with_advisory_lock_claim'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/delegation.rb:80:in 'block in GoodJob::Job::GeneratedRelationMethods#with_advisory_lock_claim'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation.rb:1393:in 'ActiveRecord::Relation#_scoping'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation.rb:558:in 'ActiveRecord::Relation#scoping'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/delegation.rb:80:in 'GoodJob::Job::GeneratedRelationMethods#with_advisory_lock_claim'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/job.rb:388:in 'GoodJob::Job.perform_with_advisory_lock'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/app/models/good_job/job.rb:409:in 'GoodJob::Job.perform_with_lock'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/delegation.rb:80:in 'block in GoodJob::Job::GeneratedRelationMethods#perform_with_lock'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation.rb:1393:in 'ActiveRecord::Relation#_scoping'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation.rb:558:in 'ActiveRecord::Relation#scoping'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activerecord-8.1.3/lib/active_record/relation/delegation.rb:80:in 'GoodJob::Job::GeneratedRelationMethods#perform_with_lock'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/lib/good_job/job_performer.rb:35:in 'block in GoodJob::JobPerformer#next'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/lib/good_job/capsule_tracker.rb:94:in 'GoodJob::CapsuleTracker#register'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/lib/good_job/job_performer.rb:34:in 'GoodJob::JobPerformer#next'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/lib/good_job/scheduler.rb:289:in 'block (2 levels) in GoodJob::Scheduler#create_task'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/reloader.rb:77:in 'block in ActiveSupport::Reloader.wrap'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/execution_wrapper.rb:91:in 'ActiveSupport::ExecutionWrapper.wrap'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/activesupport-8.1.3/lib/active_support/reloader.rb:74:in 'ActiveSupport::Reloader.wrap'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/good_job-4.18.2/lib/good_job/scheduler.rb:288:in 'block in GoodJob::Scheduler#create_task'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/safe_task_executor.rb:24:in 'block in Concurrent::SafeTaskExecutor#execute'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb:48:in 'block in Concurrent::Synchronization::MutexLockableObject#synchronize'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb:48:in 'Thread::Mutex#synchronize'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb:48:in 'Concurrent::Synchronization::MutexLockableObject#synchronize'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/safe_task_executor.rb:22:in 'Concurrent::SafeTaskExecutor#execute'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/ivar.rb:170:in 'Concurrent::IVar#safe_execute'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/scheduled_task.rb:298:in 'Concurrent::ScheduledTask#process_task'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/timer_set.rb:169:in 'block (2 levels) in Concurrent::TimerSet#process_tasks'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:382:in 'Concurrent::RubyThreadPoolExecutor::Worker#run_task'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:372:in 'block (3 levels) in Concurrent::RubyThreadPoolExecutor::Worker#create_worker'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:361:in 'Kernel#loop'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:361:in 'block (2 levels) in Concurrent::RubyThreadPoolExecutor::Worker#create_worker'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:358:in 'Kernel#catch'\",\"/home/judith/.rbenv/versions/4.0.2/lib/ruby/gems/4.0.0/gems/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:358:in 'block in Concurrent::RubyThreadPoolExecutor::Worker#create_worker'\"}"], ["duration", "PT0.08380344100442016S"], ["id", "0f0a55e1-564c-4c2f-9d84-b3f3bff142e4"]]
```
### Screenshots and other files
see above
### Environment information
**OpenProject version**
_dev_