Bug 1174652 - 5.7.0@extOracle10: ISE on Systems -> <system> -> Provisioning -> Snapshot Tags -> <tag>
Summary: 5.7.0@extOracle10: ISE on Systems -> <system> -> Provisioning -> Snapshot Tag...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Satellite 5
Classification: Red Hat
Component: WebUI
Version: unspecified
Hardware: Unspecified
OS: Unspecified
unspecified
high
Target Milestone: ---
Assignee: Grant Gainey
QA Contact: Lukáš Hellebrandt
URL:
Whiteboard:
: 1182948 (view as bug list)
Depends On:
Blocks: sat570-triage sat570-postga
TreeView+ depends on / blocked
 
Reported: 2014-12-16 09:14 UTC by Jan Hutař
Modified: 2015-04-23 13:20 UTC (History)
3 users (show)

Fixed In Version: spacewalk-java-2.3.8-98-sat
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-04-23 13:20:35 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
/var/log/tomcat6/catalina.out (14.66 KB, text/plain)
2014-12-16 09:14 UTC, Jan Hutař
no flags Details


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2015:0281 0 normal SHIPPED_LIVE Satellite 5.7 bug fix update 2015-03-03 13:59:01 UTC

Description Jan Hutař 2014-12-16 09:14:46 UTC
Created attachment 969478 [details]
/var/log/tomcat6/catalina.out

Description of problem:
I have 5.6.0@extOracle10 upgraded to 5.7.0@extOracle10 and I'm getting ISE on Systems -> <system> -> Provisioning -> Snapshot Tags -> <tag>


Version-Release number of selected component (if applicable):
Satellite-5.7.0-RHEL6-re20141212.0-x86_64
  (custom pkg installed: spacewalk-java-2.3.8-92.git.8.b687552.el6sat.noarch)
rhn-upgrade-5.7.0.15-1.el6sat.noarch


How reproducible:
always on this system


Steps to Reproduce:
1. Upgrade 5.6.0@extOracle10 to 5.7.0@extOracle10
2. Sync some channels, register some clients
3. Navigate to Systems -> <system> -> Provisioning -> Snapshot Tags and create new tag (you need to have "Provisioning" add-on entitlement)
4. Navigate to Systems -> <system> -> Provisioning -> Snapshot Tags ->
   -> <tag_you_have_created>


Actual results:
ISE (see attached catalina.out)


Expected results:
No ISE

Comment 1 Jan Hutař 2014-12-16 09:19:33 UTC
Similar traceback on Systems -> <system> -> Provisioning -> Snapshots -> <snapshot> -> Packages:

2014-12-16 04:17:13,894 [TP-Processor6] ERROR com.redhat.rhn.common.db.datasource.CachedStatement - Error while processing cached statement sql: select  pn.name as package_name,
        pa.name as arch,
        case when server_pkgs.max_evr is null then null
          else evr_t_as_vre_simple(server_pkgs.max_evr)
        end as server_nvrea,
        (server_pkgs.max_evr).epoch as server_epoch,
        (server_pkgs.max_evr).version as server_version,
        (server_pkgs.max_evr).release as server_release,
        case when snapshot_pkgs.max_evr is null then null
          else evr_t_as_vre_simple(snapshot_pkgs.max_evr)
        end as snapshot_nvrea,
        (snapshot_pkgs.max_evr).epoch as snapshot_epoch,
        (snapshot_pkgs.max_evr).version as snapshot_version,
        (snapshot_pkgs.max_evr).release as snapshot_release,
        case when server_pkgs.max_evr is null then -2
             when snapshot_pkgs.max_evr is null then 2
             else rpm.vercmp((server_pkgs.max_evr).epoch, (server_pkgs.max_evr).version, (server_pkgs.max_evr).release,
                             (snapshot_pkgs.max_evr).epoch, (snapshot_pkgs.max_evr).version, (snapshot_pkgs.max_evr).release)
        end as comparison
  from (select max(pem1.evr) as max_evr, sp.name_id, sp.package_arch_id
          from rhnServerPackage sp
          join rhnPackageEvr pem1
            on pem1.id = sp.evr_id
         where sp.server_id = ?
         group by sp.name_id, sp.package_arch_id
        ) server_pkgs
  full outer join (select max(spe.evr) as max_evr, pnevra.name_id, pnevra.package_arch_id
                     from rhnSnapshot s
                     join rhnSnapshotPackage spkg
                       on spkg.snapshot_id = s.id
                     join rhnPackageNEVRA pnevra
                       on spkg.nevra_id = pnevra.id
                     join rhnPackageEvr spe
                       on pnevra.evr_id = spe.id
                    where s.server_id = ?
                      and s.id = ?
                    group by pnevra.name_id, pnevra.package_arch_id
        ) snapshot_pkgs
    on server_pkgs.name_id = snapshot_pkgs.name_id
   and server_pkgs.package_arch_id = snapshot_pkgs.package_arch_id
  join rhnPackageName pn
    on pn.id = coalesce(server_pkgs.name_id, snapshot_pkgs.name_id)
  join rhnPackageArch pa
    on pa.id = coalesce(server_pkgs.package_arch_id, snapshot_pkgs.package_arch_id)
 where server_pkgs.max_evr is null
    or snapshot_pkgs.max_evr is null
    or (rpm.vercmp((server_pkgs.max_evr).epoch, (server_pkgs.max_evr).version, (server_pkgs.max_evr).release,
                   (snapshot_pkgs.max_evr).epoch, (snapshot_pkgs.max_evr).version, (snapshot_pkgs.max_evr).release) <> 0)
 order by pn.name
com.redhat.rhn.common.db.WrappedSQLException: ORA-22806: not an object or REF

	at com.redhat.rhn.common.translation.SqlExceptionTranslator.oracleSQLException(SqlExceptionTranslator.java:82)
	at com.redhat.rhn.common.translation.SqlExceptionTranslator.sqlException(SqlExceptionTranslator.java:42)
	at com.redhat.rhn.common.db.NamedPreparedStatement.execute(NamedPreparedStatement.java:143)
	at com.redhat.rhn.common.db.datasource.CachedStatement.execute(CachedStatement.java:467)
	at com.redhat.rhn.common.db.datasource.CachedStatement.execute(CachedStatement.java:443)
	at com.redhat.rhn.common.db.datasource.CachedStatement.execute(CachedStatement.java:345)
	at com.redhat.rhn.common.db.datasource.CachedStatement.execute(CachedStatement.java:351)
	at com.redhat.rhn.common.db.datasource.CachedStatement.execute(CachedStatement.java:287)
	at com.redhat.rhn.common.db.datasource.SelectMode.execute(SelectMode.java:110)
	at com.redhat.rhn.manager.BaseManager.makeDataResult(BaseManager.java:57)
	at com.redhat.rhn.manager.system.SystemManager.systemSnapshotPackages(SystemManager.java:3097)
	at com.redhat.rhn.frontend.action.systems.sdc.SnapshotPackagesAction.getResult(SnapshotPackagesAction.java:32)
	at com.redhat.rhn.frontend.taglibs.list.helper.ListHelper.setupDataSet(ListHelper.java:107)
	at com.redhat.rhn.frontend.taglibs.list.helper.ListHelper.execute(ListHelper.java:100)
	at com.redhat.rhn.frontend.action.systems.sdc.SnapshotBaseAction.execute(SnapshotBaseAction.java:56)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
	at com.redhat.rhn.frontend.struts.RhnRequestProcessor.process(RhnRequestProcessor.java:102)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	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:298)
	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:761)
Caused by: 
java.sql.SQLException: ORA-22806: not an object or REF

	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
	at oracle.jdbc.driver.T2CConnection.checkError(T2CConnection.java:676)
	at oracle.jdbc.driver.T2CConnection.checkError(T2CConnection.java:602)
	at oracle.jdbc.driver.T2CPreparedStatement.executeForDescribe(T2CPreparedStatement.java:571)
	at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1049)
	at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1154)
	at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3370)
	at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3476)
	at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.execute(NewProxyPreparedStatement.java:651)
	at com.redhat.rhn.common.db.NamedPreparedStatement.execute(NamedPreparedStatement.java:140)
	... 53 more
2014-12-16 04:17:13,895 [TP-Processor6] WARN  org.apache.struts.action.RequestProcessor - Unhandled Exception thrown: class com.redhat.rhn.common.db.WrappedSQLException
2014-12-16 04:17:13,895 [TP-Processor6] ERROR com.redhat.rhn.frontend.servlets.SessionFilter - Error during transaction. Rolling back
javax.servlet.ServletException: com.redhat.rhn.common.db.WrappedSQLException: ORA-22806: not an object or REF

	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:102)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	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:298)
	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:761)
Caused by: 
com.redhat.rhn.common.db.WrappedSQLException: ORA-22806: not an object or REF

	at com.redhat.rhn.common.translation.SqlExceptionTranslator.oracleSQLException(SqlExceptionTranslator.java:82)
	at com.redhat.rhn.common.translation.SqlExceptionTranslator.sqlException(SqlExceptionTranslator.java:42)
	at com.redhat.rhn.common.db.NamedPreparedStatement.execute(NamedPreparedStatement.java:143)
	at com.redhat.rhn.common.db.datasource.CachedStatement.execute(CachedStatement.java:467)
	at com.redhat.rhn.common.db.datasource.CachedStatement.execute(CachedStatement.java:443)
	at com.redhat.rhn.common.db.datasource.CachedStatement.execute(CachedStatement.java:345)
	at com.redhat.rhn.common.db.datasource.CachedStatement.execute(CachedStatement.java:351)
	at com.redhat.rhn.common.db.datasource.CachedStatement.execute(CachedStatement.java:287)
	at com.redhat.rhn.common.db.datasource.SelectMode.execute(SelectMode.java:110)
	at com.redhat.rhn.manager.BaseManager.makeDataResult(BaseManager.java:57)
	at com.redhat.rhn.manager.system.SystemManager.systemSnapshotPackages(SystemManager.java:3097)
	at com.redhat.rhn.frontend.action.systems.sdc.SnapshotPackagesAction.getResult(SnapshotPackagesAction.java:32)
	at com.redhat.rhn.frontend.taglibs.list.helper.ListHelper.setupDataSet(ListHelper.java:107)
	at com.redhat.rhn.frontend.taglibs.list.helper.ListHelper.execute(ListHelper.java:100)
	at com.redhat.rhn.frontend.action.systems.sdc.SnapshotBaseAction.execute(SnapshotBaseAction.java:56)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
	... 40 more
Caused by: 
java.sql.SQLException: ORA-22806: not an object or REF

	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
	at oracle.jdbc.driver.T2CConnection.checkError(T2CConnection.java:676)
	at oracle.jdbc.driver.T2CConnection.checkError(T2CConnection.java:602)
	at oracle.jdbc.driver.T2CPreparedStatement.executeForDescribe(T2CPreparedStatement.java:571)
	at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1049)
	at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1154)
	at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3370)
	at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3476)
	at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.execute(NewProxyPreparedStatement.java:651)
	at com.redhat.rhn.common.db.NamedPreparedStatement.execute(NamedPreparedStatement.java:140)
	... 53 more


Please let me know if that is related of user error or needs another bug.

Comment 2 Tomas Lestach 2014-12-16 12:40:36 UTC
Taking for investigation ...

Comment 5 Jan Hutař 2015-01-24 21:03:42 UTC
*** Bug 1182948 has been marked as a duplicate of this bug. ***

Comment 7 Grant Gainey 2015-02-04 21:48:51 UTC
Further investigation suggests that while the problem *is* in the where-clause at the end of the query, it has nothing to do with the comparison-operator.

The clause in question is
===
where server_pkgs.max_evr is null
   or snapshot_pkgs.max_evr is null
   or (rpm.vercmp((server_pkgs.max_evr).epoch, 
                  (server_pkgs.max_evr).version, 
                  (server_pkgs.max_evr).release,
                  (snapshot_pkgs.max_evr).epoch, 
                  (snapshot_pkgs.max_evr).version,
                  (snapshot_pkgs.max_evr).release) <> 0)
===

In Postgresql, if server_pkgs.max_evr is null, the rest of the predicate is ignored.

In Oracle, the entire predicate is evaluated prior to executing the query. This means that when server_pkgs.max_evr is null, expressions like (server_pkgs.max_evr).epoch evaluate to (null).epoch, and "not an object or REF" rears its ugly head.

I foresee a date with 'coalesce()' in the near future...

Comment 8 Grant Gainey 2015-02-05 16:40:20 UTC
spacewalk.github 23f602453d80f53953472ec114fd687a5a089227

Comment 11 Lukáš Hellebrandt 2015-02-13 12:37:53 UTC
Verified with spacewalk-java-2.3.8-100

ISE doesn't occur anymore and the pages in question (snapshots and snapshot tags) are shown properly

Comment 13 Mathieu Bridon 2015-04-23 13:20:35 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2015-0281.html


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