Bug 1854026
| Summary: | 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)" | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Red Hat Satellite | Reporter: | Hao Chang Yu <hyu> | ||||
| Component: | Content Views | Assignee: | Samir Jha <sajha> | ||||
| Status: | CLOSED ERRATA | QA Contact: | Lai <ltran> | ||||
| Severity: | medium | Docs Contact: | |||||
| Priority: | high | ||||||
| Version: | 6.7.0 | CC: | ahumbe, chorn, egolov, kkinge, mjia, mmccune, pwallend, rrajput, sajha | ||||
| Target Milestone: | 6.9.0 | Keywords: | EasyFix, PrioBumpGSS, Triaged | ||||
| Target Release: | Unused | ||||||
| Hardware: | Unspecified | ||||||
| OS: | Unspecified | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | tfm-rubygem-katello-3.18.0-0 | Doc Type: | If docs needed, set a value | ||||
| Doc Text: | Story Points: | --- | |||||
| Clone Of: | |||||||
| : | 1899306 (view as bug list) | Environment: | |||||
| Last Closed: | 2021-04-21 13:15:01 UTC | Type: | Bug | ||||
| Regression: | --- | Mount Type: | --- | ||||
| Documentation: | --- | CRM: | |||||
| Verified Versions: | Category: | --- | |||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||
| Embargoed: | |||||||
| Attachments: |
|
||||||
Moving this bug to POST for triage into Satellite since the upstream issue https://projects.theforeman.org/issues/30322 has been resolved. 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 Created attachment 1729216 [details]
tfm-rubygem-katello-3.16.0.13-2.HOTFIXRHBZ1854026.el7sat.noarch.rpm
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
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 |
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