Hello,

when I try to access the /rhn/Login.do page of my PostgreSQL-backended
Spacewalk, I get the following traceback:

2010-06-29 11:16:41,052 [TP-Processor3] ERROR 
org.hibernate.util.JDBCExceptionReporter - Bad value for type long : <?xml 
version="1.0" encoding="UTF-8"?>\012 ... </rhn-cert>
2010-06-29 11:16:41,056 [TP-Processor3] WARN  
org.apache.struts.action.RequestProcessor - Unhandled Exception thrown: class 
com.redhat.rhn.common.hibernate.HibernateRuntimeException
2010-06-29 11:16:41,074 [TP-Processor3] ERROR 
com.redhat.rhn.frontend.servlets.SessionFilter - Error during transaction. 
Rolling back
javax.servlet.ServletException: 
com.redhat.rhn.common.hibernate.HibernateRuntimeException: Executing query 
SatelliteCertificate.lookupNewestCertificate with params null failed
        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:236)
        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.doGet(ActionServlet.java:414)
        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:101)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        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: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:108)
        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:55)
        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:128)
        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:293)
        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:636)
Caused by: com.redhat.rhn.common.hibernate.HibernateRuntimeException: Executing 
query SatelliteCertificate.lookupNewestCertificate with params null failed
        at 
com.redhat.rhn.common.hibernate.HibernateFactory.lookupObjectByNamedQuery(HibernateFactory.java:178)
        at 
com.redhat.rhn.domain.satellite.CertificateFactory.lookupNewestCertificate(CertificateFactory.java:46)
        at 
com.redhat.rhn.manager.satellite.CertificateManager.getGracePeriodEndDate(CertificateManager.java:88)
        at 
com.redhat.rhn.manager.satellite.CertificateManager.isSatelliteCertExpired(CertificateManager.java:57)
        at 
com.redhat.rhn.frontend.action.LoginSetupAction.execute(LoginSetupAction.java:47)
        at 
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
        ... 40 more
Caused by: org.hibernate.exception.DataException: could not execute query
        at 
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:77)
        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:338)
        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 
org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:811)
        at 
com.redhat.rhn.common.hibernate.HibernateFactory.lookupObjectByNamedQuery(HibernateFactory.java:172)
        ... 45 more
Caused by: org.postgresql.util.PSQLException: Bad value for type long : <?xml 
version="1.0" encoding="UTF-8"?>\012 ...  /rhn-cert>
        at 
org.postgresql.jdbc2.AbstractJdbc2ResultSet.toLong(AbstractJdbc2ResultSet.java:2796)
        at 
org.postgresql.jdbc2.AbstractJdbc2ResultSet.getLong(AbstractJdbc2ResultSet.java:2019)
        at 
org.postgresql.jdbc3g.Jdbc3gResultSet.getBlob(Jdbc3gResultSet.java:52)
        at 
org.postgresql.jdbc2.AbstractJdbc2ResultSet.getBlob(AbstractJdbc2ResultSet.java:335)
        at 
com.mchange.v2.c3p0.impl.NewProxyResultSet.getBlob(NewProxyResultSet.java:515)
        at org.hibernate.type.BlobType.get(BlobType.java:57)
        at org.hibernate.type.BlobType.nullSafeGet(BlobType.java:111)
        at org.hibernate.type.AbstractType.hydrate(AbstractType.java:81)
        at 
org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2096)
        at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1380)
        at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1308)
        at org.hibernate.loader.Loader.getRow(Loader.java:1206)
        at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:580)
        at org.hibernate.loader.Loader.doQuery(Loader.java:701)
        at 
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
        at org.hibernate.loader.Loader.doList(Loader.java:2220)
        ... 54 more

The issue seems to be cause by the fact that the class Jdbc3gResultSet
in org/postgresql/jdbc3g/Jdbc3gResultSet.java does

    public java.sql.Blob getBlob(int i) throws SQLException
    {
        checkResultSet(i);
        if (wasNullFlag)
            return null;

        return new Jdbc3gBlob(connection, getLong(i));
    }

and AbstractJdbc2ResultSet in
org/postgresql/jdbc2/AbstractJdbc2ResultSet.java does

    public long getLong(int columnIndex) throws SQLException
    {
        checkResultSet(columnIndex);
        if (wasNullFlag)
            return 0; // SQL NULL

        Encoding encoding = connection.getEncoding();
        if (encoding.hasAsciiNumbers()) {
            try {
                return getFastLong(columnIndex);
            } catch (NumberFormatException ex) {
            }
        }
        return toLong( getFixedString(columnIndex) );
    }

So the getBlob tries to do a Jdbc3gBlob with connection and some oid,
while the getFixedString(columnIndex) already returns the blob
content.

I tried to google around, tried one recommendation to change the
type in SatelliteCertificate.hbm.xml from blob to binary, but that
lead to other errors.

Do you guys have an easy solution for our code which accesses
rhnSatelliteCert?

Thanks,

-- 
Jan Pazdziora
Principal Software Engineer, Satellite Engineering, Red Hat

_______________________________________________
Spacewalk-devel mailing list
Spacewalk-devel@redhat.com
https://www.redhat.com/mailman/listinfo/spacewalk-devel

Reply via email to