Bug 533190 - HTTP 500 when deleting errata: DB operations must be in batches <=1000
Summary: HTTP 500 when deleting errata: DB operations must be in batches <=1000
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Red Hat Satellite 5
Classification: Red Hat
Component: Server
Version: 530
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Justin Sherrill
QA Contact: Šimon Lukašík
URL:
Whiteboard:
Depends On:
Blocks: sat540-blockers
TreeView+ depends on / blocked
 
Reported: 2009-11-05 15:04 UTC by Alan Fitton
Modified: 2018-11-02 08:50 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2010-10-28 14:51:30 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Alan Fitton 2009-11-05 15:04:30 UTC
Description of problem:

Deleting over 1000 errata at once (by using the select all button) fails.

It appears DB operations must be split into batches of <=1000 because of a limit imposed by oracle. Maybe this needs doing in other areas of code also.

Version-Release number of selected component (if applicable):

5.3

How reproducible:

always

Steps to Reproduce:

1. have over 1000 published errata present
2. go to errata tab (top)
3. manage errata (left), under published subcategory
4. click "select all"
5. click "delete errata"
  
Actual results:

internal server error, traceback below

Expected results:

deletetion of errata

Additional info:

2009-11-05 14:20:40,433 [TP-Processor3] WARN  org.hibernate.util.JDBCExceptionReporter - SQL Error: 1795, SQLState: 42000

2009-11-05 14:20:40,433 [TP-Processor3] ERROR org.hibernate.util.JDBCExceptionReporter - ORA-01795: maximum number of expressi

ons in a list is 1000



2009-11-05 14:20:40,446 [TP-Processor3] WARN  org.apache.struts.action.RequestProcessor - Unhandled Exception thrown: class or

g.hibernate.exception.SQLGrammarException

2009-11-05 14:20:40,447 [TP-Processor3] ERROR com.redhat.rhn.frontend.servlets.SessionFilter - Error during transaction. Rolli

ng back

javax.servlet.ServletException: could not execute query

        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: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:735)

Caused by:

org.hibernate.exception.SQLGrammarException: could not execute query

        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)

        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)

        at org.hibernate.loader.Loader.doList(Loader.java:2223)

        at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)

        at org.hibernate.loader.Loader.list(Loader.java:2099)

        at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)

        at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:341)

        at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)

        at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)

        at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)

        at com.redhat.rhn.common.hibernate.HibernateFactory.listObjectsByNamedQuery(HibernateFactory.java:211)

        at com.redhat.rhn.common.hibernate.HibernateFactory.listObjectsByNamedQuery(HibernateFactory.java:189)

        at com.redhat.rhn.domain.channel.ChannelFactory.getChannelPackageWithErrata(ChannelFactory.java:553)

        at com.redhat.rhn.manager.channel.ChannelManager.removeErrata(ChannelManager.java:2639)

        at com.redhat.rhn.frontend.action.channel.manage.ErrataRemoveAction.execute(ErrataRemoveAction.java:91)

        at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)

        ... 40 more

Caused by:

java.sql.SQLException: ORA-01795: maximum number of expressions in a list is 1000

        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.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:219)

        at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:813)

        at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1049)

        at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:854)

        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1154)

        at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3370)

        at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3415)

        at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:50)

        at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:187)

        at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)

        at org.hibernate.loader.Loader.doQuery(Loader.java:674)

        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)

        at org.hibernate.loader.Loader.doList(Loader.java:2220)

        ... 53 more

Servlet.service() for servlet action threw exception

java.sql.SQLException: ORA-01795: maximum number of expressions in a list is 1000



        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.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:219)

        at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:813)

        at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1049)

        at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:854)

        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1154)

        at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3370)

        at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3415)

        at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:50)

        at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:187)

        at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)

        at org.hibernate.loader.Loader.doQuery(Loader.java:674)

        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)

        at org.hibernate.loader.Loader.doList(Loader.java:2220)

       at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)

        at org.hibernate.loader.Loader.list(Loader.java:2099)

        at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)

        at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:341)

        at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)

        at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)

        at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)

        at com.redhat.rhn.common.hibernate.HibernateFactory.listObjectsByNamedQuery(HibernateFactory.java:211)

        at com.redhat.rhn.common.hibernate.HibernateFactory.listObjectsByNamedQuery(HibernateFactory.java:189)

        at com.redhat.rhn.domain.channel.ChannelFactory.getChannelPackageWithErrata(ChannelFactory.java:553)

        at com.redhat.rhn.manager.channel.ChannelManager.removeErrata(ChannelManager.java:2639)

        at com.redhat.rhn.frontend.action.channel.manage.ErrataRemoveAction.execute(ErrataRemoveAction.java:91)

        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: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:735)

Comment 1 Jan Pazdziora 2009-11-05 15:47:04 UTC
Updating component to Server.

Comment 3 Justin Sherrill 2010-07-28 20:16:16 UTC
fixed in spacewalk master:

bb71fe8f8d6cef4d938b271a65c408ad53974a9f

Comment 4 Šimon Lukašík 2010-09-24 09:39:48 UTC
QA: Changing to VERIFIED:

Testing procedure:
-sync rh base channel
-clone with current state
-select all errata from clone and remove

Test results:
On Sat530: ISE with stacktrace above
On Sat540: No ISE, works as expected

Verified against:
Satellite-5.4.0-RHEL5-re20100910.2

Comment 6 Garik Khachikyan 2010-10-25 14:10:23 UTC
# VERIFIED against stage-signed packages/iso:
Satellite-5.4.0-RHEL5-re20101025.0

The scenario on comment#4 completes successfully on 1410 erratas without an ise.

Comment 7 Clifford Perry 2010-10-28 14:46:34 UTC
The 5.4.0 RHN Satellite and RHN Proxy release has occurred. This issue has been resolved with this release. 


RHEA-2010:0801 - RHN Satellite Server 5.4.0 Upgrade
https://rhn.redhat.com/rhn/errata/details/Details.do?eid=10332

RHEA-2010:0803 - RHN Tools enhancement update
https://rhn.redhat.com/rhn/errata/details/Details.do?eid=10333

RHEA-2010:0802 - RHN Proxy Server 5.4.0 bug fix update
https://rhn.redhat.com/rhn/errata/details/Details.do?eid=10334

RHEA-2010:0800 - RHN Satellite Server 5.4.0
https://rhn.redhat.com/rhn/errata/details/Details.do?eid=10335

Docs are available:

http://docs.redhat.com/docs/en-US/Red_Hat_Network_Satellite/index.html 

Regards,
Clifford


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