Bug 497119 - multi-org, removing channel access of base channel w/ child channels results in ISE
Summary: multi-org, removing channel access of base channel w/ child channels results ...
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Red Hat Satellite 5
Classification: Red Hat
Component: WebUI
Version: 530
Hardware: All
OS: Linux
urgent
urgent
Target Milestone: ---
Assignee: Brad Buckingham
QA Contact: wes hayutin
URL: https://fjs-0-03.rhndev.redhat.com/rh...
Whiteboard:
: 500232 (view as bug list)
Depends On:
Blocks: 456998 486216 497538 497539
TreeView+ depends on / blocked
 
Reported: 2009-04-22 13:08 UTC by wes hayutin
Modified: 2009-09-10 18:15 UTC (History)
5 users (show)

Fixed In Version: sat530
Doc Type: Bug Fix
Doc Text:
Clone Of:
: 497538 497539 (view as bug list)
Environment:
Last Closed: 2009-09-10 18:15:36 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
traceback txt (14.51 KB, text/plain)
2009-05-08 14:01 UTC, wes hayutin
no flags Details

Description wes hayutin 2009-04-22 13:08:27 UTC
Description of problem:

4/14 build 

recreate:
1. create two orgs orgA orgB
2. share a one public channel and two public child channels from orgA
3. register a system in orgB and subscribe to the shared base and two child channels
4. go to orgA and move the public base channel to protected, and remove access to org

result ISE



 0, minPoolSize -> 5, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@24f924f9 [ description -> null, driverClass -> null, factoryClassLocation -> null, identityToken -> 24f924f9, jdbcUrl -> jdbc:oracle:thin:@localhost:1521:rhnsat, properties -> {user=******, password=******} ], preferredTestQuery -> null, propertyCycle -> 300, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, usesTraditionalReflectiveProxies -> false ], factoryClassLocation -> null, identityToken -> 6930693, numHelperThreads -> 3 ]
Apr 21, 2009 2:13:51 PM org.apache.coyote.http11.Http11BaseProtocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Apr 21, 2009 2:13:52 PM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
Apr 21, 2009 2:13:52 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/729  config=null
Apr 21, 2009 2:13:53 PM org.apache.catalina.storeconfig.StoreLoader load
INFO: Find registry server-registry.xml at classpath resource
Apr 21, 2009 2:13:53 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 46744 ms
2009-04-22 09:02:45,798 [TP-Processor6] WARN  org.apache.struts.action.RequestProcessor - Unhandled Exception thrown: class com.redhat.rhn.common.db.WrappedSQLException
2009-04-22 09:02:45,846 [TP-Processor6] ERROR com.redhat.rhn.frontend.servlets.SessionFilter - Error during transaction. Rolling back
javax.servlet.ServletException: ORA-20246: (channel_unsubscribe_child_exists) - Unsubscribe failed because server is subscribed to child channels
ORA-06512: at "RHNSAT.RHN_EXCEPTION", line 23
ORA-06512: at "RHNSAT.RHN_CHANNEL", line 439
ORA-06512: at line 1

	at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:237)
	at com.redhat.rhn.frontend.struts.RhnRequestProcessor.process(RhnRequestProcessor.java:82)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at com.redhat.rhn.frontend.servlets.AuthFilter.doFilter(AuthFilter.java:73)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:142)
	at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:58)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at com.redhat.rhn.frontend.servlets.LocalizedEnvironmentFilter.doFilter(LocalizedEnvironmentFilter.java:67)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at com.redhat.rhn.frontend.servlets.EnvironmentFilter.doFilter(EnvironmentFilter.java:108)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at com.redhat.rhn.frontend.servlets.SessionFilter.doFilter(SessionFilter.java:55)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at com.redhat.rhn.frontend.servlets.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:97)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
	at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
	at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
	at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773)
	at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
	at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
	at java.lang.Thread.run(Thread.java:735)
Caused by: 
com.redhat.rhn.common.db.WrappedSQLException: ORA-20246: (channel_unsubscribe_child_exists) - Unsubscribe failed because server is subscribed to child channels
ORA-06512: at "RHNSAT.RHN_EXCEPTION", line 23
ORA-06512: at "RHNSAT.RHN_CHANNEL", line 439
ORA-06512: at line 1

	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
	at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)
	at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:218)
	at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:969)
	at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1190)
	at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3370)
	at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3476)
	at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4400)
	at com.mchange.v2.c3p0.impl.NewProxyCallableStatement.execute(NewProxyCallableStatement.java:2706)
	at com.redhat.rhn.common.db.NamedPreparedStatement.execute(NamedPreparedStatement.java:115)
	at com.redhat.rhn.common.db.datasource.CachedStatement.executeCallable(CachedStatement.java:507)
	at com.redhat.rhn.common.db.datasource.CallableMode.execute(CallableMode.java:34)
	at com.redhat.rhn.manager.system.SystemManager.unsubscribeServerFromChannel(SystemManager.java:1194)
	at com.redhat.rhn.frontend.action.channel.manage.EditChannelAction.deny(EditChannelAction.java:227)
	at com.redhat.rhn.frontend.action.channel.manage.EditChannelAction.execute(EditChannelAction.java:136)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
	... 40 more
Caused by: 
java.sql.SQLException: ORA-20246: (channel_unsubscribe_child_exists) - Unsubscribe failed because server is subscribed to child channels
ORA-06512: at "RHNSAT.RHN_EXCEPTION", line 23
ORA-06512: at "RHNSAT.RHN_CHANNEL", line 439
ORA-06512: at line 1

	... 58 more
2009-04-22 09:02:47,042 [TP-Processor6] ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/rhn].[action] - Servlet.service() for servlet action threw exception
java.sql.SQLException: ORA-20246: (channel_unsubscribe_child_exists) - Unsubscribe failed because server is subscribed to child channels
ORA-06512: at "RHNSAT.RHN_EXCEPTION", line 23
ORA-06512: at "RHNSAT.RHN_CHANNEL", line 439
ORA-06512: at line 1

	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
	at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)
	at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:218)
	at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:969)
	at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1190)
	at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3370)
	at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3476)
	at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4400)
	at com.mchange.v2.c3p0.impl.NewProxyCallableStatement.execute(NewProxyCallableStatement.java:2706)
	at com.redhat.rhn.common.db.NamedPreparedStatement.execute(NamedPreparedStatement.java:115)
	at com.redhat.rhn.common.db.datasource.CachedStatement.executeCallable(CachedStatement.java:507)
	at com.redhat.rhn.common.db.datasource.CallableMode.execute(CallableMode.java:34)
	at com.redhat.rhn.manager.system.SystemManager.unsubscribeServerFromChannel(SystemManager.java:1194)
	at com.redhat.rhn.frontend.action.channel.manage.EditChannelAction.deny(EditChannelAction.java:227)
	at com.redhat.rhn.frontend.action.channel.manage.EditChannelAction.execute(EditChannelAction.java:136)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:237)
	at com.redhat.rhn.frontend.struts.RhnRequestProcessor.process(RhnRequestProcessor.java:82)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at com.redhat.rhn.frontend.servlets.AuthFilter.doFilter(AuthFilter.java:73)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:142)
	at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:58)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at com.redhat.rhn.frontend.servlets.LocalizedEnvironmentFilter.doFilter(LocalizedEnvironmentFilter.java:67)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at com.redhat.rhn.frontend.servlets.EnvironmentFilter.doFilter(EnvironmentFilter.java:108)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at com.redhat.rhn.frontend.servlets.SessionFilter.doFilter(SessionFilter.java:55)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at com.redhat.rhn.frontend.servlets.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:97)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
	at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
	at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
	at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773)
	at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
	at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
	at java.lang.Thread.run(Thread.java:735)
[root@fjs-0-03 tomcat5]#

Comment 1 Shannon Hughes 2009-05-07 19:18:09 UTC
mass move to onqa

Comment 2 wes hayutin 2009-05-08 14:00:36 UTC
failing in 5/7.1

Comment 3 wes hayutin 2009-05-08 14:01:58 UTC
Created attachment 343087 [details]
traceback txt

Comment 4 wes hayutin 2009-05-08 14:35:06 UTC
recreate:
1. create two orgs orgA orgB
2. share a one public channel and two public child channels from orgA
3. register a system in orgB and subscribe to the shared base and two child
channels
4. go to orgA and move the public base channel to protected, and remove access
to org

The key here is to create more than one child channel.. atleast two to recreate the bug.

Comment 5 Shannon Hughes 2009-05-12 14:48:53 UTC
*** Bug 500232 has been marked as a duplicate of this bug. ***

Comment 6 Brad Buckingham 2009-05-12 17:29:19 UTC
This failure appears to be related to a recent change made to SystemManager.unsubscribeServerFromChannel().  The change was to remove a check for an unused/undefined config variable that was used to determine if the hibernate refresh/reload logic should be bypassed.  Unfortunately, removing that check results in a 'reload' being done which is resulting in ISEs.  I fixed a couple of similar cases; therefore, I'm reassigning the bug to myself and will look for any similar errors.

Comment 7 Brad Buckingham 2009-05-12 19:17:37 UTC
master git commit: 91a19c53dda407bd95433472b580d4df0253779f
vader git commit: b723ef441dc82cd5126e64132c61f83a2bab3922

In addition to updating the case mentioned in #4 above, also updated it to handle modifications from:

- Manage Software Channels -> select Channel -> select Organizations tab
- select to add / remove access from an org

Note: The Organizations table is only applicable to a Protected channel
Prior to the change, the above scenario could also generate an ISE.

Comment 8 Brad Buckingham 2009-05-20 13:20:58 UTC
Mass move to ON_QA.

Comment 9 wes hayutin 2009-05-26 17:09:01 UTC
verified 5/21.1 build

Comment 10 John Sefler 2009-07-31 20:06:18 UTC
re-verified on stage iso build 7/24
no ISE is beeing thrown - expected access removal is occurring
moving to RELEASE_PENDING

Comment 11 Brandon Perkins 2009-09-10 18:15:36 UTC
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHEA-2009-1434.html


Note You need to log in before you can comment on or make changes to this bug.