Description of problem: Cannot delete organization which contains same repository as org1: ERROR: update or delete on table "rhncontentsource" violates foreign key constraint "rhn_csf_source_fk" on table "rhncontentsourcefilter" Version-Release number of selected component (if applicable): spacewalk-java-2.3.8-96.el6sat.noarch satellite-schema-5.7.0.27-1.el6sat.noarch spacewalk-backend-2.3.3-23.el6sat.noarch How reproducible: always Steps to Reproduce: 1. Create channel A and repo http://dl.fedoraproject.org/pub/epel/6Server/x86_64/ (with filter set to "+freealut*" to make sync faster) 2. Create channel B and sync if from repo with same url&filter but in different organization now 3. Sync channel A in org 1 and channel B in org 2 4. Login as satellite admin in org 1 and attempt to delete org 2 Admin -> Organizations -> <org2> -> delete organization -> Delete Organization Actual results: ISE Expected results: Should work Additional info: ==> /var/log/tomcat6/catalina.out <== 2017-04-20 09:46:50,973 [TP-Processor3] WARN org.apache.struts.action.RequestProcessor - Unhandled Exception thrown: class com.redhat.rhn.common.db.WrappedSQLException 2017-04-20 09:46:50,974 [TP-Processor3] ERROR com.redhat.rhn.frontend.servlets.SessionFilter - Error during transaction. Rolling back javax.servlet.ServletException: com.redhat.rhn.common.db.WrappedSQLException: ERROR: update or delete on table "rhncontentsource" violates foreign key constraint "rhn_csf_source_fk" on table "rhncontentsourcefilter" Detail: Key (id)=(548) is still referenced from table "rhncontentsourcefilter". Where: SQL statement "delete from rhnContentSource where org_id = org_id_in" PL/pgSQL function rhn_org.delete_org(numeric) line 79 at SQL statement at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:520) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:427) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228) at com.redhat.rhn.frontend.struts.RhnRequestProcessor.process(RhnRequestProcessor.java:105) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) at javax.servlet.http.HttpServlet.service(HttpServlet.java:643) at javax.servlet.http.HttpServlet.service(HttpServlet.java:723) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.redhat.rhn.frontend.servlets.AuthFilter.doFilter(AuthFilter.java:127) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.redhat.rhn.frontend.servlets.LocalizedEnvironmentFilter.doFilter(LocalizedEnvironmentFilter.java:67) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.redhat.rhn.frontend.servlets.EnvironmentFilter.doFilter(EnvironmentFilter.java:100) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.redhat.rhn.frontend.servlets.SessionFilter.doFilter(SessionFilter.java:57) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.redhat.rhn.frontend.servlets.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:97) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:299) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698) at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690) at java.lang.Thread.run(Thread.java:809) Caused by: com.redhat.rhn.common.db.WrappedSQLException: ERROR: update or delete on table "rhncontentsource" violates foreign key constraint "rhn_csf_source_fk" on table "rhncontentsourcefilter" Detail: Key (id)=(548) is still referenced from table "rhncontentsourcefilter". Where: SQL statement "delete from rhnContentSource where org_id = org_id_in" PL/pgSQL function rhn_org.delete_org(numeric) line 79 at SQL statement at com.redhat.rhn.common.translation.SqlExceptionTranslator.postgreSqlException(SqlExceptionTranslator.java:54) at com.redhat.rhn.common.translation.SqlExceptionTranslator.sqlException(SqlExceptionTranslator.java:44) at com.redhat.rhn.common.db.datasource.CachedStatement.executeCallable(CachedStatement.java:543) at com.redhat.rhn.common.db.datasource.CallableMode.execute(CallableMode.java:35) at com.redhat.rhn.domain.org.OrgFactory.deleteOrg(OrgFactory.java:105) at com.redhat.rhn.frontend.action.multiorg.OrgDeleteAction.deleteOrg(OrgDeleteAction.java:116) at com.redhat.rhn.frontend.action.multiorg.OrgDeleteAction.execute(OrgDeleteAction.java:72) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425) ... 40 more Caused by: org.postgresql.util.PSQLException: ERROR: update or delete on table "rhncontentsource" violates foreign key constraint "rhn_csf_source_fk" on table "rhncontentsourcefilter" Detail: Key (id)=(548) is still referenced from table "rhncontentsourcefilter". Where: SQL statement "delete from rhnContentSource where org_id = org_id_in" PL/pgSQL function rhn_org.delete_org(numeric) line 79 at SQL statement at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2094) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1827) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:508) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:384) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:377) at com.mchange.v2.c3p0.impl.NewProxyCallableStatement.execute(NewProxyCallableStatement.java:2706) at com.redhat.rhn.common.db.NamedPreparedStatement.execute(NamedPreparedStatement.java:117) at com.redhat.rhn.common.db.datasource.CachedStatement.executeCallable(CachedStatement.java:528) ... 45 more ==> /opt/rh/postgresql92/root/var/lib/pgsql/data/pg_log/postgresql-Thu.log <== 2017-04-20 09:46:50.972 EDT ERROR: update or delete on table "rhncontentsource" violates foreign key constraint "rhn_csf_source_fk" on table "rhncontentsourcefilter" 2017-04-20 09:46:50.972 EDT DETAIL: Key (id)=(548) is still referenced from table "rhncontentsourcefilter". 2017-04-20 09:46:50.972 EDT CONTEXT: SQL statement "delete from rhnContentSource where org_id = org_id_in" PL/pgSQL function rhn_org.delete_org(numeric) line 79 at SQL statement 2017-04-20 09:46:50.972 EDT STATEMENT: select * from rhn_org.delete_org($1) as result 2017-04-20 09:46:50.973 EDT ERROR: current transaction is aborted, commands ignored until end of transaction block 2017-04-20 09:46:50.973 EDT STATEMENT: select 'c3p0 ping' from dual
Related to bug 1444047.
Related to bug 1444519.
spacewalk.git(master): 31c3a53688af7e08c356d3edb19ca4dd639fd85e
Verified with spacewalk-java-2.5.14-84 . To actually reproduce, it is enough to create a new organization, create a repo within it with a filter, and try to remove the organization. No need to do anything with the first organization or with more than one repos or with any channel: 1) Create testorg 2) In testorg, create testrepo with URL="http://dl.fedoraproject.org/pub/epel/6Server/x86_64/" and filter="+freealut*" 3) From org 1, remove testorg and notice ISE After the fix, the organization can be removed even if it contains a repository with a filter.