Project

General

Profile

Bug #23262

unable to org delete if org has CV with host associated with it

Added by Chris Duryee 10 months ago. Updated 7 months ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
Organizations and Locations
Target version:
Difficulty:
Triaged:
Bugzilla link:
Pull request:
Team Backlog:
Fixed in Releases:
Found in Releases:

Description

If you set up an org with a CV and then add a host to the CV, the org delete will result in the following:

PG::ForeignKeyViolation: ERROR: update or delete on table "katello_content_facets" violates foreign key constraint "katello_content_facet_errata_ca_id" on table "katello_content_facet_errata"
DETAIL: Key (id)=(1) is still referenced from table "katello_content_facet_errata".
: DELETE FROM "katello_content_facets" WHERE "katello_content_facets"."content_view_id" = $1 AND "katello_content_facets"."host_id" = 1 (ActiveRecord::InvalidForeignKey)
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/connection_adapters/postgresql_adapter.rb:614:in `async_exec'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/connection_adapters/postgresql_adapter.rb:614:in `block (2 levels) in exec_no_cache'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activesupport-5.1.4/lib/active_support/dependencies/interlock.rb:46:in `block in permit_concurrent_loads'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activesupport-5.1.4/lib/active_support/concurrency/share_lock.rb:185:in `yield_shares'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activesupport-5.1.4/lib/active_support/dependencies/interlock.rb:45:in `permit_concurrent_loads'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/connection_adapters/postgresql_adapter.rb:613:in `block in exec_no_cache'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_adapter.rb:612:in `block (2 levels) in log'
/opt/rh/rh-ruby24/root/usr/share/ruby/monitor.rb:214:in `mon_synchronize'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_adapter.rb:611:in `block in log'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activesupport-5.1.4/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_adapter.rb:603:in `log'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/connection_adapters/postgresql_adapter.rb:612:in `exec_no_cache'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/connection_adapters/postgresql_adapter.rb:601:in `execute_and_clear'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:92:in `exec_delete'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract/database_statements.rb:145:in `delete'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract/query_cache.rb:17:in `delete'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/relation.rb:510:in `delete_all'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/associations/has_many_through_association.rb:160:in `delete_records'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/associations/has_many_through_association.rb:133:in `delete_or_nullify_all_records'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/associations/collection_association.rb:159:in `delete_all'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/associations/collection_proxy.rb:500:in `delete_all'
/opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/associations/collection_proxy.rb:1071:in `clear'
/opt/theforeman/tfm/root/usr/share/gems/gems/katello-3.6.0/app/lib/actions/katello/content_view/remove.rb:70:in `block in plan'

This may be related to host delete happening in run instead of plan. hosts.clear is now happening on a list of hosts and not an empty set.

History

#1 Updated by Zach Huntington-Meath 10 months ago

  • Legacy Backlogs Release (now unused) set to 284
  • Category set to Organizations and Locations

#2 Updated by Zach Huntington-Meath 10 months ago

  • Legacy Backlogs Release (now unused) changed from 284 to 352

#3 Updated by Samir Jha 10 months ago

Unable to reproduce in 3.6 and 3.7 on my setup. Will close after confirmation from Zach.

#4 Updated by Evgeni Golov 10 months ago

@Samir, the nightly pipeline of master can reproduce that: https://ci.theforeman.org/job/katello-nightly-release/222/consoleFull

# hammer organization delete --name="${ORGANIZATION}"' failed with status 70
Could not delete the organization:
   PG::ForeignKeyViolation: ERROR:  update or delete on table "katello_content_facets" violates foreign key constraint "katello_content_facet_errata_ca_id" on table "katello_content_facet_errata" 
   DETAIL:  Key (id)=(1) is still referenced from table "katello_content_facet_errata".
   : DELETE FROM "katello_content_facets" WHERE "katello_content_facets"."content_view_id" = $1 AND "katello_content_facets"."host_id" = 1

Also available in: Atom PDF