+++ This bug was initially created as a clone of Bug #767646 +++ Description of problem: altering the way a channel is shared between sub-organizations raises an exception ; more exactly when changing a channel from protected to private, the following exception is raised : class com.redhat.rhn.frontend.xmlrpc.InvalidChecksumLabelException Version-Release number of selected component (if applicable): spacewalk-java*-1.2.39-108 How reproducible: all the time Steps to Reproduce: 1.) Click on Channels > Manage Software Channels > channel name 2.) Under "Organization Sharing", select "This channel is protected and may only be accessed by specific trusted organizations." and click the "Update Channel" button. 3.) Click either "Grant Access and Confirm" or "Deny Access and Confirm". 4.) Click on the channel again, and select "This channel is private and cannot be accessed by any other organization.", then click "Update Channel". 5.) Click "Confirm", and an Internal Server Error results. Actual results: [/var/log/tomcat5/catalina.out] 2011-11-28 10:22:18,048 [TP-Processor2] WARN org.apache.struts.action.RequestProcessor - Unhandled Exception thrown: class com.redhat.rhn.frontend.xmlrpc.InvalidChecksumLabelException 2011-11-28 10:22:18,048 [TP-Processor2] ERROR com.redhat.rhn.frontend.servlets.SessionFilter - Error during transaction. Rolling back javax.servlet.ServletException: Invalid checksum label: 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:99) 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:117) 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:291) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:775) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:704) at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:897) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685) at java.lang.Thread.run(Thread.java:736) Caused by: com.redhat.rhn.frontend.xmlrpc.InvalidChecksumLabelException: Invalid checksum label: at com.redhat.rhn.manager.channel.UpdateChannelCommand.update(UpdateChannelCommand.java:112) at com.redhat.rhn.frontend.action.channel.manage.EditChannelAction.edit(EditChannelAction.java:353) at com.redhat.rhn.frontend.action.channel.manage.EditChannelAction.makePrivate(EditChannelAction.java:314) at com.redhat.rhn.frontend.action.channel.manage.EditChannelAction.execute(EditChannelAction.java:139) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) ... 40 more Expected results: the channel is transfered from protected/public to private Additional info: downgrading the packages is a workaround.
The actual problem here is that sometime we broke saving the channel's options if you had "None" selected for the yum metadata checksum type. Yum must have a checksum for the metadata, however we support clients that do not use yum (like RHEL 4) and "None" is a perfectly valid selection for those clients. If the channel had been saved before we broke things with a "None" value for checksum type, then any attempt to save the channel data would result in the error and stack trace listed above. I have fixed it so that we do not error if you have selected "None" for checksum type.
Committed to Spacewalk master: 879273153fe9867d423baee3397e59a2a273658c
Moving ON_QA. Packages that address this bugzilla should now be available in yum repos at http://yum.spacewalkproject.org/nightly/
Spacewalk 1.8 has been released: https://fedorahosted.org/spacewalk/wiki/ReleaseNotes18