Project

General

Profile

Actions

Bug #24633

closed

Duplicate puppet classes are created when publishing content views in parallel

Added by Ondřej Pražák over 5 years ago. Updated over 5 years ago.

Status:
Closed
Priority:
Normal
Category:
Puppet integration
Target version:
-
Fixed in Releases:
Found in Releases:

Description

Description of problem:
Puppet class is created multiple times when content views with the same class
are published in parallel.

Steps to Reproduce:
1. On a clean instance, prepare 2 content views with the same puppet class:

hammer --output csv organization create --name clash_a
hammer --output csv organization create --name clash_b
hammer --output csv product create --description description --label clash_product_a_label --name clash_product_a --organization-id 3
hammer --output csv product create --description description --label clash_product_b_label --name clash_product_b --organization-id 4
hammer --output csv repository create --content-type puppet --name puppet_clash_repo_a --product-id 245 --publish-via-http true --url="http://puppetmodules.example.com/bagoftricks" 
hammer --output csv repository create --content-type puppet --name puppet_clash_repo_b --product-id 246 --publish-via-http true --url="http://puppetmodules.example.com/bagoftricks" 
hammer --output csv repository synchronize --id 10
hammer --output csv repository synchronize --id 11
hammer --output csv content-view create --name clash_cv_a --organization-id 3
hammer --output csv content-view create --name clash_cv_b --organization-id 4
hammer --output csv content-view puppet-module add --author robottelo --name generic_1 --content-view-id 5
hammer --output csv content-view puppet-module add --author robottelo --name generic_1 --content-view-id 6

2. publish content views in parallel, I used hammer from 2 different terminals

3. go to Configure -> Puppet Classes, you should see duplicate entries, each in different environment

Actual results
Publishing in parallel bypasses the Rails validations and creates duplicates. Puppet classes with the same name break 'hammer puppet-class info --name' command.

Expected results:
No duplicates should exist.


Files

puppetclasses_actual.png View puppetclasses_actual.png 89.5 KB Ondřej Pražák, 08/16/2018 10:49 AM
puppetclasses_expected.png View puppetclasses_expected.png 98.7 KB Ondřej Pražák, 08/16/2018 10:49 AM

Related issues 1 (0 open1 closed)

Related to Foreman Maintain - Feature #24923: Add check for puppet class duplicatesClosedOndřej PražákActions
Actions #1

Updated by Ondřej Pražák over 5 years ago

  • File puppetclasses_expected.png added
  • File puppetclasses_actual.png added
  • Subject changed from Duplicate puppet classes are created when publishing content views in parallel to Duplicate puppet classes are created when publishing content views in parallel
  • Category changed from 89 to Content Views
Actions #2

Updated by Ondřej Pražák over 5 years ago

  • File deleted (puppetclasses_expected.png)
Actions #3

Updated by Ondřej Pražák over 5 years ago

  • File deleted (puppetclasses_actual.png)
Actions #5

Updated by Andrew Kofink over 5 years ago

  • Project changed from Katello to Foreman
  • Category deleted (Content Views)

Puppet classes need to be uniquely validated by name in the database. Rails validations won't handle this race condition.

This should be able to be reproduced by importing two environments at the same time.

Actions #6

Updated by The Foreman Bot over 5 years ago

  • Status changed from New to Ready For Testing
  • Assignee set to Ondřej Pražák
  • Pull request https://github.com/theforeman/foreman/pull/6019 added
Actions #7

Updated by Ondřej Pražák over 5 years ago

  • Related to Feature #24923: Add check for puppet class duplicates added
Actions #8

Updated by Marek Hulán over 5 years ago

  • Pull request https://github.com/theforeman/foreman_maintain/pull/212 added
Actions #9

Updated by Marek Hulán over 5 years ago

  • Fixed in Releases 1.20.0 added
Actions #10

Updated by Ondřej Pražák over 5 years ago

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

Updated by Tomer Brisker over 5 years ago

  • Category set to Puppet integration
Actions

Also available in: Atom PDF