Project

General

Profile

Actions

Bug #30536

closed

updating hosts policy using bulk action fails with sql error

Added by Ondřej Pražák almost 4 years ago. Updated almost 4 years ago.

Status:
Closed
Priority:
Normal
Target version:
-
Difficulty:
Triaged:
No
Found in Releases:

Description

Description of problem:
Add same policy twice to any host using bulk action fails with sql error, here is traceback
~~~
2020-07-30T10:02:15 [I|app|7234a419] Started POST "/compliance/policies/update_multiple_hosts?host_ids%5B%5D=4&host_ids%5B%5D=1" for 127.0.0.1 at 2020-07-30 10:02:15 -0400
2020-07-30T10:02:15 [I|app|7234a419] Processing by PoliciesController#update_multiple_hosts as HTML
2020-07-30T10:02:15 [I|app|7234a419] Parameters: {"utf8"=>"✓", "authenticity_token"=>"AsoqhvaapVoYTBwMLIox+2ICKHwvMRV3jjSP0T103oDAJKw954AF0pszr5CazvCF26e9ttVLQUIplONSx6IkGA==", "policy"=>{"id"=>"1"}, "host_ids"=>["4", "1"]}
2020-07-30T10:02:17 [D|tax|7234a419] Current location set to Default Location
2020-07-30T10:02:17 [D|tax|7234a419] Current organization set to Default Organization
2020-07-30T10:02:17 [W|app|7234a419] Action failed
2020-07-30T10:02:17 [D|app|7234a419] Backtrace for 'Action failed' error (ActiveRecord::RecordNotUnique): PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "index_scaptimony_asset_policies_on_asset_id_and_policy_id"
DETAIL: Key (asset_id, policy_id)=(8, 1) already exists.

/opt/theforeman/tfm/root/usr/share/gems/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/postgresql_adapter.rb:675:in `async_exec_params'
/opt/theforeman/tfm/root/usr/share/gems/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/postgresql_adapter.rb:675:in `block (2 levels) in exec_no_cache'
/opt/theforeman/tfm/root/usr/share/gems/gems/activesupport-6.0.3.1/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/opt/theforeman/tfm/root/usr/share/gems/gems/activesupport-6.0.3.1/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/opt/theforeman/tfm/root/usr/share/gems/gems/activesupport-6.0.3.1/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/opt/theforeman/tfm/root/usr/share/gems/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/postgresql_adapter.rb:674:in `block in exec_no_cache'
/opt/theforeman/tfm/root/usr/share/gems/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract_adapter.rb:722:in `block (2 levels) in log'

~~~

How reproducible: Always

Steps to Reproduce:
1. Go To "All Hosts"
2. select few Hosts -> Click on "Select Action" on top right and click on "Assign Compliance Policy"
3. Select First Policy and click on submit
4. Repeat same step i.e select same hosts and try to assign same policy

Actual results: It should not fails with sql error.

Expected results: It should ignore the host if same epolicy is already assign

Actions #1

Updated by The Foreman Bot almost 4 years ago

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

Updated by The Foreman Bot almost 4 years ago

  • Fixed in Releases foreman_openscap 4.1.0 added
Actions #3

Updated by Ondřej Pražák almost 4 years ago

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

Updated by Ondřej Pražák almost 4 years ago

  • Subject changed from updating hosts policy using bulk action fails with sql error to updating hosts policy using bulk action fails with sql error
  • Fixed in Releases foreman_openscap 4.0.2 added
Actions

Also available in: Atom PDF