Bug 1854026 - Failed to publish content view: "PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "index_katello_docker_meta_tags_on_schema1_id_and_schema2_id" DETAIL: Key (schema1_id, schema2_id)"
Summary: Failed to publish content view: "PG::UniqueViolation: ERROR: duplicate key va...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Satellite
Classification: Red Hat
Component: Content Views
Version: 6.7.0
Hardware: Unspecified
OS: Unspecified
high
medium
Target Milestone: 6.9.0
Assignee: Samir Jha
QA Contact: Lai
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2020-07-06 06:43 UTC by Hao Chang Yu
Modified: 2024-03-25 16:08 UTC (History)
9 users (show)

Fixed In Version: tfm-rubygem-katello-3.18.0-0
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
: 1899306 (view as bug list)
Environment:
Last Closed: 2021-04-21 13:15:01 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
tfm-rubygem-katello-3.16.0.13-2.HOTFIXRHBZ1854026.el7sat.noarch.rpm (12.99 MB, application/x-rpm)
2020-11-13 21:09 UTC, Mike McCune
no flags Details


Links
System ID Private Priority Status Summary Last Updated
Foreman Issue Tracker 30322 0 Low Closed ActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR: duplicate key value violates unique constraint 2021-01-28 00:47:41 UTC
Red Hat Knowledge Base (Solution) 5214051 0 None None None 2020-07-09 03:17:29 UTC
Red Hat Product Errata RHSA-2021:1313 0 None None None 2021-04-21 13:17:10 UTC

Description Hao Chang Yu 2020-07-06 06:43:01 UTC
Description of problem:
Removing the latest content view version doesn't delete the Katello::DockerMetaTag records. This will cause duplicated/orphaned Katello::DockerMetaTag records after publishing a new version. If a tag has both schema v1 manifest and schema v2 manifest then the CV or CCV will fail to publish with the following error:

-------------------------------------
ActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "index_katello_docker_meta_tags_on_schema1_id_and_schema2_id"
DETAIL:  Key (schema1_id, schema2_id)=(340545, 340570) already exists.
: INSERT INTO "katello_docker_meta_tags" ("schema1_id", "schema2_id", "name") VALUES ($1, $2, $3) RETURNING "id"


Steps to Reproduce:
1. Create a CCV and add a CV that contains a docker repo.
2. Publish the CCV which will create version 1.
3. Run the following commands to get all orphaned Katello::DockerMetaTag records.

foreman-rake console
Katello::DockerMetaTag.where("id not in (?)", Katello::RepositoryDockerMetaTag.pluck(:docker_meta_tag_id)).size
exit

4. It should return 0 records.
5. Remove the CCV version 1 and wait until the task is finished.
6. Repeat step 3, and you will see some orphaned Katello::DockerMetaTag records.


Additional info:
To fix the "ActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint" error, we can run the following commands to remove the orphaned Katello::DockerMetaTag records

NOTE: For security, please make a snapshot of the Satellite before proceeding.

foreman-rake console
Katello::DockerMetaTag.where("id not in (?)", Katello::RepositoryDockerMetaTag.pluck(:docker_meta_tag_id)).delete_all
exit

Comment 2 Bryan Kearney 2020-09-02 16:03:53 UTC
Moving this bug to POST for triage into Satellite since the upstream issue https://projects.theforeman.org/issues/30322 has been resolved.

Comment 4 Mike McCune 2020-11-13 21:08:31 UTC
Satellite 6.8.1 is due out soon and we are offering a hotfix that is applicable to Satellite 6.8.1. 

*** Satellite 6.8.1 Hotfix Available ***

1) Download tfm-rubygem-katello-3.16.0.13-2.HOTFIXRHBZ1854026.el7sat.noarch.rpm from this bugzilla to your Satellite

2) stop services:

satellite-maintain service stop

3) Install:

rpm -Uvh tfm-rubygem-katello-3.16.0.13-2.HOTFIXRHBZ1854026.el7sat.noarch.rpm

4) restart:

satellite-maintain service start

5) resume operations

Comment 5 Mike McCune 2020-11-13 21:09:21 UTC
Created attachment 1729216 [details]
tfm-rubygem-katello-3.16.0.13-2.HOTFIXRHBZ1854026.el7sat.noarch.rpm

Comment 6 Lai 2021-01-01 21:00:09 UTC
Steps to retest:

1. Create a CCV and add a CV that contains a docker repo.
2. Publish the CCV which will create version 1.
3. Run the following commands to get all orphaned Katello::DockerMetaTag records.

foreman-rake console
Katello::DockerMetaTag.where("id not in (?)", Katello::RepositoryDockerMetaTag.pluck(:docker_meta_tag_id)).size
exit

4. Verify that the record returns 0
5. Remove the CCV version 1 and wait until the task is finished.
6. Repeat step 3
7. Verify that the record returns 0

Expected:
4 & 7)
# foreman-rake console
Loading production environment (Rails 6.0.3.4)
irb(main):001:0> Katello::DockerMetaTag.where("id not in (?)", Katello::RepositoryDockerMetaTag.pluck(:docker_meta_tag_id)).size
=> 0


# foreman-rake console
irb(main):002:0> Katello::DockerMetaTag.where("id not in (?)", Katello::RepositoryDockerMetaTag.pluck(:docker_meta_tag_id)).size
=> 0


Actual:
4 & 7)
# foreman-rake console
Loading production environment (Rails 6.0.3.4)
irb(main):001:0> Katello::DockerMetaTag.where("id not in (?)", Katello::RepositoryDockerMetaTag.pluck(:docker_meta_tag_id)).size
=> 0


# foreman-rake console
irb(main):002:0> Katello::DockerMetaTag.where("id not in (?)", Katello::RepositoryDockerMetaTag.pluck(:docker_meta_tag_id)).size
=> 0

Verified on 6.9.0_07 with tfm-rubygem-katello-3.18.0-1.el7sat.noarch

Comment 9 errata-xmlrpc 2021-04-21 13:15:01 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (Moderate: Satellite 6.9 Release), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHSA-2021:1313


Note You need to log in before you can comment on or make changes to this bug.