Bug 1075550

Summary: when I delete user in webUI this error message appears in PostgreSQL log: ERROR: null value in column "user_id" violates not-null constraint
Product: Red Hat Satellite Reporter: Jan Hutař <jhutar>
Component: WebUIAssignee: Ohad Levy <ohadlevy>
Status: CLOSED CURRENTRELEASE QA Contact: sthirugn <sthirugn>
Severity: low Docs Contact:
Priority: unspecified    
Version: NightlyCC: dcleal, jmagen, jmontleo, sthirugn
Target Milestone: UnspecifiedKeywords: Triaged
Target Release: Unused   
Hardware: Unspecified   
OS: Unspecified   
URL: http://projects.theforeman.org/issues/4641
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-09-11 12:21:39 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:

Description Jan Hutař 2014-03-12 11:12:25 UTC
Description of problem:
When I delete user in webUI this error message appears in PostgreSQL log.


Version-Release number of selected component (if applicable):
Satellite-6.0.3-RHEL-6-20140305.1


How reproducible:
always


Steps to Reproduce:
1. In https://<fqdn>/users create new user
2. Delete it
3. Watch PostgreSQL log


Actual results:
==> /var/log/foreman/production.log <==
Processing by UsersController#destroy as HTML
  Parameters: {"authenticity_token"=>"5yMGr+z1YPItZWs4znL1TsgRV72Get+TIo/tbiem/jk=", "id"=>"6-ccccc"}
Expire fragment views/tabs_and_title_records-1 (0.1ms)
Expire fragment views/tabs_and_title_records-1 (0.4ms)
Expire fragment views/tabs_and_title_records-1 (0.1ms)

==> /var/lib/pgsql/data/pg_log/postgresql-Wed.log <==
ERROR:  null value in column "user_id" violates not-null constraint
STATEMENT:  INSERT INTO "cached_user_roles" ("created_at", "role_id", "updated_at", "user_id", "user_role_id") VALUES ($1, $2, $3, $4, $5) RETURNING "id"

==> /var/log/foreman/production.log <==
Redirected to https://<fqdn>/users
Completed 302 Found in 412ms (ActiveRecord: 26.3ms)
Processing by UsersController#index as HTML
  Rendered users/index.html.erb within layouts/application (22.7ms)
  Rendered common/_searchbar.html.erb (3.5ms)
  Rendered home/_user_dropdown.html.erb (1.5ms)
Read fragment views/tabs_and_title_records-1 (0.1ms)
  Rendered home/_organization_dropdown.html.erb (5.0ms)
  Rendered home/_org_switcher.html.erb (5.4ms)
  Rendered home/_submenu.html.erb (4.2ms)
  Rendered home/_submenu.html.erb (6.9ms)
  Rendered home/_submenu.html.erb (4.7ms)
  Rendered home/_submenu.html.erb (3.0ms)
  Rendered home/_submenu.html.erb (2.9ms)
  Rendered home/_submenu.html.erb (5.0ms)
Write fragment views/tabs_and_title_records-1 (1.2ms)
  Rendered home/_topbar.html.erb (39.3ms)
  Rendered layouts/base.html.erb (41.1ms)
Completed 200 OK in 80ms (Views: 66.7ms | ActiveRecord: 4.5ms)


Expected results:
No error in the PostgreSQL should be logged.

Comment 2 jmagen@redhat.com 2014-05-22 08:14:49 UTC
https://github.com/theforeman/foreman/pull/1371

submitted by community member 'marianitadn;

Comment 3 Bryan Kearney 2014-07-24 18:01:41 UTC
Moving to POST since upstream bug http://projects.theforeman.org/issues/4641 has been closed
-------------
Maria Nita
I tried to write a regression test case for this, but no luck.

This is the test https://github.com/marianitadn/foreman/blob/4641-delete-user/test/unit/user_test.rb#L341-L351, but it doesn't fail.

I think I have an idea for the solution, but without a test I can't be convinced. 
-------------
Dominic Cleal
I think this could be tricky to test, as the deletion and therefore your test are actually successful.  The error seems to be coming from the "ensure_default_role" after_commit hook on the User model (thanks to Marek for pointing to this).  Errors in here seem to be swallowed and are only hitting the logs.  It looks like the test_after_commit gem would enable testing of it, if you want to try it out.

Probably setting the after_commit hook to run on create and update only would fix the issue.
-------------
Dominic Cleal
https://github.com/theforeman/foreman/pull/1371
-------------
Maria Nita
Applied in changeset commit:a0bd5bb282c27f72a5e3746a1582b73366c15d21.

Comment 7 sthirugn@redhat.com 2014-09-04 18:41:03 UTC
Verified. No error seen in postgresql log.

Version Tested:
GA Snap 7 - Satellite-6.0.4-RHEL-6-20140829.0

* apr-util-ldap-1.3.9-3.el6_0.1.x86_64
* candlepin-0.9.23-1.el6_5.noarch
* candlepin-common-1.0.1-1.el6_5.noarch
* candlepin-scl-1-5.el6_4.noarch
* candlepin-scl-quartz-2.1.5-5.el6_4.noarch
* candlepin-scl-rhino-1.7R3-1.el6_4.noarch
* candlepin-scl-runtime-1-5.el6_4.noarch
* candlepin-selinux-0.9.23-1.el6_5.noarch
* candlepin-tomcat6-0.9.23-1.el6_5.noarch
* elasticsearch-0.90.10-6.el6sat.noarch
* foreman-1.6.0.42-1.el6sat.noarch
* foreman-compute-1.6.0.42-1.el6sat.noarch
* foreman-gce-1.6.0.42-1.el6sat.noarch
* foreman-libvirt-1.6.0.42-1.el6sat.noarch
* foreman-ovirt-1.6.0.42-1.el6sat.noarch
* foreman-postgresql-1.6.0.42-1.el6sat.noarch
* foreman-proxy-1.6.0.30-1.el6sat.noarch
* foreman-selinux-1.6.0.14-1.el6sat.noarch
* foreman-vmware-1.6.0.42-1.el6sat.noarch
* katello-1.5.0-30.el6sat.noarch
* katello-ca-1.0-1.noarch
* katello-certs-tools-1.5.6-1.el6sat.noarch
* katello-installer-0.0.62-1.el6sat.noarch
* openldap-2.4.23-34.el6_5.1.x86_64
* openldap-devel-2.4.23-34.el6_5.1.x86_64
* pulp-katello-0.3-4.el6sat.noarch
* pulp-nodes-common-2.4.1-0.5.rc1.el6sat.noarch
* pulp-nodes-parent-2.4.1-0.5.rc1.el6sat.noarch
* pulp-puppet-plugins-2.4.1-0.5.rc1.el6sat.noarch
* pulp-puppet-tools-2.4.1-0.5.rc1.el6sat.noarch
* pulp-rpm-plugins-2.4.1-0.5.rc1.el6sat.noarch
* pulp-selinux-2.4.1-0.5.rc1.el6sat.noarch
* pulp-server-2.4.1-0.5.rc1.el6sat.noarch
* python-ldap-2.3.10-1.el6.x86_64
* ruby193-rubygem-net-ldap-0.3.1-3.el6sat.noarch
* ruby193-rubygem-runcible-1.1.0-2.el6sat.noarch

Comment 8 Bryan Kearney 2014-09-11 12:21:39 UTC
This was delivered with Satellite 6.0 which was released on 10 September 2014.