Project

General

Profile

Actions

Bug #35936

closed

Registration error: PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "katello_available_module_streams_name_stream_context"

Added by Jeremy Lenz almost 2 years ago. Updated almost 2 years ago.

Status:
Closed
Priority:
High
Assignee:
Category:
Subscriptions
Target version:
Difficulty:
Triaged:
Yes
Fixed in Releases:
Found in Releases:

Description

Cloned from https://bugzilla.redhat.com/show_bug.cgi?id=2139545

Description of problem:

While testing concurrent registration with very low load (in this case, 9 content hosts, but in other with as low as 5 content hosts) we see the following error from the client side:

~~
PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "katello_available_module_streams_name_stream_context"
DETAIL: Key (name, stream, context)=(perl-DBD-MySQL, 4.046, bce9b2db) already exists.
(HTTP error code 500: Internal Server Error)
~~

The Key that clashes takes the different following values:

DETAIL: Key (name, stream, context)=(idm, client, 7c4ef452) already exists.
DETAIL: Key (name, stream, context)=(perl-DBD-MySQL, 4.046, bce9b2db) already exists.
DETAIL: Key (name, stream, context)=(pki-deps, 10.6, b4937e53) already exists.
DETAIL: Key (name, stream, context)=(pki-deps, 10.6, b4937e53) already exists.
DETAIL: Key (name, stream, context)=(postgresql, 9.6, 229f0a1c) already exists.

The server traceback is as follows:

~~
2022-11-02T13:54:03 [I|app|2350e6d6] Processing by Katello::Api::Rhsm::CandlepinDynflowProxyController#upload_profiles as JSON
2022-11-02T13:54:03 [I|app|2350e6d6] Parameters: {"id"=>"042be06e-69bb-4b49-aeed-345aef1bb232"}
2022-11-02T13:54:03 [E|app|1d64b4f9] ActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "katello_available_module_streams_name_stream_context"
1d64b4f9 | DETAIL: Key (name, stream, context)=(idm, client, 7c4ef452) already exists.
1d64b4f9 |
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/connection_adapters/postgresql_adapter.rb:675:in `exec_params'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/connection_adapters/postgresql_adapter.rb:675:in `block (2 levels) in exec_no_cache'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/connection_adapters/postgresql_adapter.rb:674:in `block in exec_no_cache'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/connection_adapters/abstract_adapter.rb:728:in `block (2 levels) in log'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/connection_adapters/abstract_adapter.rb:727:in `block in log'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/connection_adapters/abstract_adapter.rb:718:in `log'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/connection_adapters/postgresql_adapter.rb:673:in `exec_no_cache'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/connection_adapters/postgresql_adapter.rb:656:in `execute_and_clear'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/connection_adapters/postgresql/database_statements.rb:98:in `exec_query'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/connection_adapters/abstract/database_statements.rb:135:in `exec_insert'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/connection_adapters/postgresql/database_statements.rb:132:in `exec_insert'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/connection_adapters/abstract/database_statements.rb:166:in `insert'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/connection_adapters/abstract/query_cache.rb:22:in `insert'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/persistence.rb:375:in `_insert_record'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/persistence.rb:932:in `_create_record'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/counter_cache.rb:166:in `_create_record'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/locking/optimistic.rb:79:in `_create_record'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/attribute_methods/dirty.rb:211:in `_create_record'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/callbacks.rb:331:in `block in _create_record'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/callbacks.rb:135:in `run_callbacks'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/callbacks.rb:825:in `_run_create_callbacks'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/callbacks.rb:331:in `_create_record'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/timestamp.rb:110:in `_create_record'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/persistence.rb:905:in `create_or_update'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/callbacks.rb:327:in `block in create_or_update'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/callbacks.rb:112:in `block in run_callbacks'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/autosave_association.rb:366:in `around_save_collection_association'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/callbacks.rb:139:in `run_callbacks'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/callbacks.rb:825:in `_run_save_callbacks'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/callbacks.rb:327:in `create_or_update'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/timestamp.rb:128:in `create_or_update'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/persistence.rb:503:in `save!'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/validations.rb:53:in `save!'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/transactions.rb:318:in `block in save!'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/transactions.rb:375:in `block in with_transaction_returning_status'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `block in transaction'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/connection_adapters/abstract/transaction.rb:278:in `within_new_transaction'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `transaction'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/transactions.rb:212:in `transaction'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/transactions.rb:366:in `with_transaction_returning_status'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/transactions.rb:318:in `save!'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/suppressor.rb:48:in `save!'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/persistence.rb:55:in `create!'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/relation.rb:115:in `block in create!'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/relation.rb:407:in `block in scoping'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/relation.rb:787:in `_scoping'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/relation.rb:407:in `scoping'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/relation.rb:115:in `create!'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/relation.rb:124:in `first_or_create!'
1d64b4f9 | /usr/share/gems/gems/katello-4.5.0.20/app/models/katello/concerns/host_managed_extensions.rb:260:in `block in import_module_streams'
1d64b4f9 | /usr/share/gems/gems/katello-4.5.0.20/app/models/katello/concerns/host_managed_extensions.rb:257:in `each'
1d64b4f9 | /usr/share/gems/gems/katello-4.5.0.20/app/models/katello/concerns/host_managed_extensions.rb:257:in `import_module_streams'
1d64b4f9 | /usr/share/gems/gems/katello-4.5.0.20/app/services/katello/host/profiles_uploader.rb:60:in `import_module_streams'
1d64b4f9 | /usr/share/gems/gems/katello-4.5.0.20/app/services/katello/host/profiles_uploader.rb:38:in `block in upload'
1d64b4f9 | /usr/share/gems/gems/katello-4.5.0.20/app/services/katello/host/profiles_uploader.rb:37:in `each'
1d64b4f9 | /usr/share/gems/gems/katello-4.5.0.20/app/services/katello/host/profiles_uploader.rb:37:in `upload'
1d64b4f9 | /usr/share/gems/gems/katello-4.5.0.20/app/controllers/katello/api/rhsm/candlepin_dynflow_proxy_controller.rb:41:in `block in upload_profiles'
1d64b4f9 | /usr/share/foreman/app/models/concerns/foreman/thread_session.rb:108:in `as'
1d64b4f9 | /usr/share/foreman/app/models/concerns/foreman/thread_session.rb:114:in `as_anonymous_admin'
1d64b4f9 | /usr/share/gems/gems/katello-4.5.0.20/app/controllers/katello/api/rhsm/candlepin_dynflow_proxy_controller.rb:35:in `upload_profiles'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/abstract_controller/base.rb:195:in `process_action'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_controller/metal/rendering.rb:30:in `process_action'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/callbacks.rb:112:in `block in run_callbacks'
1d64b4f9 | /usr/share/foreman/app/controllers/concerns/foreman/controller/timezone.rb:10:in `set_timezone'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
1d64b4f9 | /usr/share/foreman/app/models/concerns/foreman/thread_session.rb:32:in `clear_thread'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
1d64b4f9 | /usr/share/foreman/app/controllers/concerns/foreman/controller/topbar_sweeper.rb:12:in `set_topbar_sweeper_controller'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
1d64b4f9 | /usr/share/gems/gems/audited-4.9.0/lib/audited/sweeper.rb:14:in `around'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
1d64b4f9 | /usr/share/gems/gems/audited-4.9.0/lib/audited/sweeper.rb:14:in `around'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/callbacks.rb:139:in `run_callbacks'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/abstract_controller/callbacks.rb:41:in `process_action'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_controller/metal/rescue.rb:22:in `process_action'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_controller/metal/instrumentation.rb:33:in `block in process_action'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/notifications.rb:180:in `block in instrument'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/notifications.rb:180:in `instrument'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_controller/metal/instrumentation.rb:32:in `process_action'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
1d64b4f9 | /usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/railties/controller_runtime.rb:27:in `process_action'
1d64b4f9 | /usr/share/gems/gems/katello-4.5.0.20/app/controllers/katello/concerns/api/api_controller.rb:50:in `process_action'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/abstract_controller/base.rb:136:in `process'
1d64b4f9 | /usr/share/gems/gems/actionview-6.0.4.7/lib/action_view/rendering.rb:39:in `process'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_controller/metal.rb:190:in `dispatch'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_controller/metal.rb:254:in `dispatch'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/routing/route_set.rb:33:in `serve'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/journey/router.rb:49:in `block in serve'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/journey/router.rb:32:in `each'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/journey/router.rb:32:in `serve'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/routing/route_set.rb:834:in `call'
1d64b4f9 | /usr/share/gems/gems/railties-6.0.4.7/lib/rails/engine.rb:527:in `call'
1d64b4f9 | /usr/share/gems/gems/railties-6.0.4.7/lib/rails/railtie.rb:190:in `public_send'
1d64b4f9 | /usr/share/gems/gems/railties-6.0.4.7/lib/rails/railtie.rb:190:in `method_missing'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/routing/mapper.rb:19:in `block in <class:Constraints>'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/routing/mapper.rb:48:in `serve'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/journey/router.rb:49:in `block in serve'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/journey/router.rb:32:in `each'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/journey/router.rb:32:in `serve'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/routing/route_set.rb:834:in `call'
1d64b4f9 | /usr/share/gems/gems/katello-4.5.0.20/lib/katello/middleware/organization_created_enforcer.rb:18:in `call'
1d64b4f9 | /usr/share/gems/gems/katello-4.5.0.20/lib/katello/middleware/event_daemon.rb:10:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/static.rb:126:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/static.rb:126:in `call'
1d64b4f9 | /usr/share/gems/gems/apipie-dsl-2.4.0/lib/apipie_dsl/static_dispatcher.rb:67:in `call'
1d64b4f9 | /usr/share/gems/gems/apipie-rails-0.5.17/lib/apipie/static_dispatcher.rb:66:in `call'
1d64b4f9 | /usr/share/gems/gems/apipie-rails-0.5.17/lib/apipie/extractor/recorder.rb:137:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/static.rb:126:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/static.rb:126:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/static.rb:126:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/static.rb:126:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/static.rb:126:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/static.rb:126:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/static.rb:126:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/static.rb:126:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/static.rb:126:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/static.rb:126:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/static.rb:126:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/static.rb:126:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/static.rb:126:in `call'
1d64b4f9 | /usr/share/foreman/lib/foreman/middleware/libvirt_connection_cleaner.rb:9:in `call'
1d64b4f9 | /usr/share/foreman/lib/foreman/middleware/telemetry.rb:10:in `call'
1d64b4f9 | /usr/share/gems/gems/apipie-rails-0.5.17/lib/apipie/middleware/checksum_in_headers.rb:27:in `call'
1d64b4f9 | /usr/share/gems/gems/rack-2.2.4/lib/rack/tempfile_reaper.rb:15:in `call'
1d64b4f9 | /usr/share/gems/gems/rack-2.2.4/lib/rack/etag.rb:27:in `call'
1d64b4f9 | /usr/share/gems/gems/rack-2.2.4/lib/rack/conditional_get.rb:40:in `call'
1d64b4f9 | /usr/share/gems/gems/rack-2.2.4/lib/rack/head.rb:12:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/http/content_security_policy.rb:18:in `call'
1d64b4f9 | /usr/share/foreman/lib/foreman/middleware/logging_context_session.rb:22:in `call'
1d64b4f9 | /usr/share/gems/gems/rack-2.2.4/lib/rack/session/abstract/id.rb:266:in `context'
1d64b4f9 | /usr/share/gems/gems/rack-2.2.4/lib/rack/session/abstract/id.rb:260:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/cookies.rb:654:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/callbacks.rb:101:in `run_callbacks'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
1d64b4f9 | /usr/share/gems/gems/railties-6.0.4.7/lib/rails/rack/logger.rb:37:in `call_app'
1d64b4f9 | /usr/share/gems/gems/railties-6.0.4.7/lib/rails/rack/logger.rb:28:in `call'
1d64b4f9 | /usr/share/gems/gems/sprockets-rails-3.2.1/lib/sprockets/rails/quiet_assets.rb:13:in `call'
1d64b4f9 | /usr/share/foreman/lib/foreman/middleware/logging_context_request.rb:11:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/request_id.rb:27:in `call'
1d64b4f9 | /usr/share/gems/gems/katello-4.5.0.20/lib/katello/prevent_json_parsing.rb:12:in `call'
1d64b4f9 | /usr/share/gems/gems/rack-2.2.4/lib/rack/method_override.rb:24:in `call'
1d64b4f9 | /usr/share/gems/gems/rack-2.2.4/lib/rack/runtime.rb:22:in `call'
1d64b4f9 | /usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/executor.rb:14:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/static.rb:126:in `call'
1d64b4f9 | /usr/share/gems/gems/rack-2.2.4/lib/rack/sendfile.rb:110:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/ssl.rb:74:in `call'
1d64b4f9 | /usr/share/gems/gems/actionpack-6.0.4.7/lib/action_dispatch/middleware/host_authorization.rb:97:in `call'
1d64b4f9 | /usr/share/gems/gems/secure_headers-6.3.0/lib/secure_headers/middleware.rb:11:in `call'
1d64b4f9 | /usr/share/gems/gems/railties-6.0.4.7/lib/rails/engine.rb:527:in `call'
1d64b4f9 | /usr/share/gems/gems/railties-6.0.4.7/lib/rails/railtie.rb:190:in `public_send'
1d64b4f9 | /usr/share/gems/gems/railties-6.0.4.7/lib/rails/railtie.rb:190:in `method_missing'
1d64b4f9 | /usr/share/gems/gems/rack-2.2.4/lib/rack/urlmap.rb:74:in `block in call'
1d64b4f9 | /usr/share/gems/gems/rack-2.2.4/lib/rack/urlmap.rb:58:in `each'
1d64b4f9 | /usr/share/gems/gems/rack-2.2.4/lib/rack/urlmap.rb:58:in `call'
1d64b4f9 | /usr/share/gems/gems/puma-5.6.2/lib/puma/configuration.rb:252:in `call'
1d64b4f9 | /usr/share/gems/gems/puma-5.6.2/lib/puma/request.rb:77:in `block in handle_request'
1d64b4f9 | /usr/share/gems/gems/puma-5.6.2/lib/puma/thread_pool.rb:340:in `with_force_shutdown'
1d64b4f9 | /usr/share/gems/gems/puma-5.6.2/lib/puma/request.rb:76:in `handle_request'
1d64b4f9 | /usr/share/gems/gems/puma-5.6.2/lib/puma/server.rb:441:in `process_client'
1d64b4f9 | /usr/share/gems/gems/puma-5.6.2/lib/puma/thread_pool.rb:147:in `block in spawn_thread'
1d64b4f9 | /usr/share/gems/gems/logging-2.3.0/lib/logging/diagnostic_context.rb:474:in `block in create_with_logging_context'
2022-11-02T13:54:03 [I|app|1d64b4f9] Completed 500 Internal Server Error in 818ms (Views: 0.2ms | ActiveRecord: 276.8ms | Allocations: 237782)
~~

This only occurs in the first batch of concurrent registrations after initial installation and content download and we haven't been able to reproduce it when the concurrency numbers are much higher.

Version-Release number of selected component (if applicable):

Satellite 6.12.0 Snap 15

How reproducible:

We're able to reproduce it pretty reliably in our concurrent registration testing.

Steps to Reproduce:
1. Try to concurrently register some content hosts after initial installation and content download
2. Wait until some of them fails this way
3.

Actual results:

Expected results:

Additional info:

Actions #1

Updated by The Foreman Bot almost 2 years ago

  • Status changed from New to Ready For Testing
  • Assignee set to Jeremy Lenz
  • Pull request https://github.com/Katello/katello/pull/10412 added
Actions #2

Updated by The Foreman Bot almost 2 years ago

  • Fixed in Releases Katello 4.8.0 added
Actions #3

Updated by Jeremy Lenz almost 2 years ago

  • Status changed from Ready For Testing to Closed
Actions #4

Updated by Jeremy Lenz almost 2 years ago

  • Subject changed from Registration error: PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "katello_available_module_streams_name_stream_context" to Registration error: PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "katello_available_module_streams_name_stream_context"
  • Target version set to Katello 4.8.0
  • Triaged changed from No to Yes
Actions

Also available in: Atom PDF