+++ This bug was initially created as a clone of Bug #1057638 +++ When using the API function client.kickstart.profile.system.addKeys to add a GPG key to a profile and the GPG key itself isn't known in Spacewalk then a "500 Internal Server Error" occurs. On the server side a NullPointerException can be found in the Tomcat logs: 2014-01-24 14:53:04,973 [TP-Processor6] ERROR com.redhat.rhn.frontend.xmlrpc.BaseHandler - Error calling method: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:622) at com.redhat.rhn.frontend.xmlrpc.BaseHandler.invoke(BaseHandler.java:142) at redstone.xmlrpc.XmlRpcDispatcher.dispatch(XmlRpcDispatcher.java:123) at com.redhat.rhn.frontend.xmlrpc.RhnXmlRpcServer.execute(RhnXmlRpcServer.java:54) at com.redhat.rhn.frontend.xmlrpc.XmlRpcServlet.doPost(XmlRpcServlet.java:162) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 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.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:701) Caused by: java.lang.NullPointerException at com.redhat.rhn.manager.kickstart.KickstartFormatter.renderKeys(KickstartFormatter.java:890) at com.redhat.rhn.manager.kickstart.KickstartFormatter.getRhnPost(KickstartFormatter.java:677) at com.redhat.rhn.manager.kickstart.KickstartFormatter.getFileData(KickstartFormatter.java:289) at com.redhat.rhn.domain.kickstart.KickstartFactory.saveKickstartData(KickstartFactory.java:445) at com.redhat.rhn.domain.kickstart.KickstartFactory.saveKickstartData(KickstartFactory.java:479) at com.redhat.rhn.manager.kickstart.BaseKickstartCommand.store(BaseKickstartCommand.java:92) at com.redhat.rhn.frontend.xmlrpc.kickstart.profile.system.SystemDetailsHandler.addKeys(SystemDetailsHandler.java:493) ... 41 more 2014-01-24 14:53:04,977 [TP-Processor6] ERROR com.redhat.rhn.frontend.xmlrpc.BaseHandler - Caused by: java.lang.NullPointerException at com.redhat.rhn.manager.kickstart.KickstartFormatter.renderKeys(KickstartFormatter.java:890) at com.redhat.rhn.manager.kickstart.KickstartFormatter.getRhnPost(KickstartFormatter.java:677) at com.redhat.rhn.manager.kickstart.KickstartFormatter.getFileData(KickstartFormatter.java:289) at com.redhat.rhn.domain.kickstart.KickstartFactory.saveKickstartData(KickstartFactory.java:445) at com.redhat.rhn.domain.kickstart.KickstartFactory.saveKickstartData(KickstartFactory.java:479) at com.redhat.rhn.manager.kickstart.BaseKickstartCommand.store(BaseKickstartCommand.java:92) at com.redhat.rhn.frontend.xmlrpc.kickstart.profile.system.SystemDetailsHandler.addKeys(SystemDetailsHandler.java:493) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:622) at com.redhat.rhn.frontend.xmlrpc.BaseHandler.invoke(BaseHandler.java:142) at redstone.xmlrpc.XmlRpcDispatcher.dispatch(XmlRpcDispatcher.java:123) at com.redhat.rhn.frontend.xmlrpc.RhnXmlRpcServer.execute(RhnXmlRpcServer.java:54) at com.redhat.rhn.frontend.xmlrpc.XmlRpcServlet.doPost(XmlRpcServlet.java:162) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 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.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:701) Jan 24, 2014 2:53:04 PM redstone.xmlrpc.XmlRpcDispatcher writeError WARNING: redstone.xmlrpc.XmlRpcFault: unhandled internal exception: null 2014-01-24 14:53:04,987 [TP-Processor6] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: 23502 2014-01-24 14:53:04,987 [TP-Processor6] ERROR org.hibernate.util.JDBCExceptionReporter - ERROR: null value in column "crypto_key_id" violates not-null constraint 2014-01-24 14:53:04,987 [TP-Processor6] ERROR org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session org.hibernate.exception.ConstraintViolationException: could not insert collection rows: [com.redhat.rhn.domain.kickstart.KickstartData.cryptoKeys#7] at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) at org.hibernate.persister.collection.AbstractCollectionPersister.insertRows(AbstractCollectionPersister.java:1394) at org.hibernate.action.CollectionUpdateAction.execute(CollectionUpdateAction.java:56) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:144) at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298) at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27) at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000) at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338) at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106) at com.redhat.rhn.common.hibernate.ConnectionManager.commitTransaction(ConnectionManager.java:253) at com.redhat.rhn.common.hibernate.HibernateFactory.commitTransaction(HibernateFactory.java:330) at com.redhat.rhn.frontend.servlets.SessionFilter.doFilter(SessionFilter.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.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:701) Caused by: org.postgresql.util.PSQLException: ERROR: null value in column "crypto_key_id" violates not-null constraint at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:367) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:321) at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:469) at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:23) at org.hibernate.persister.collection.AbstractCollectionPersister.insertRows(AbstractCollectionPersister.java:1367) ... 30 more 2014-01-24 14:53:04,989 [TP-Processor6] ERROR com.redhat.rhn.frontend.servlets.SessionFilter - Error during transaction. Rolling back org.hibernate.exception.ConstraintViolationException: could not insert collection rows: [com.redhat.rhn.domain.kickstart.KickstartData.cryptoKeys#7] at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) at org.hibernate.persister.collection.AbstractCollectionPersister.insertRows(AbstractCollectionPersister.java:1394) at org.hibernate.action.CollectionUpdateAction.execute(CollectionUpdateAction.java:56) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:144) at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298) at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27) at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000) at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338) at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106) at com.redhat.rhn.common.hibernate.ConnectionManager.commitTransaction(ConnectionManager.java:253) at com.redhat.rhn.common.hibernate.HibernateFactory.commitTransaction(HibernateFactory.java:330) at com.redhat.rhn.frontend.servlets.SessionFilter.doFilter(SessionFilter.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.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:701) Caused by: org.postgresql.util.PSQLException: ERROR: null value in column "crypto_key_id" violates not-null constraint at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:367) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:321) at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:469) at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:23) at org.hibernate.persister.collection.AbstractCollectionPersister.insertRows(AbstractCollectionPersister.java:1367) ... 30 more In the situation where an unknown GPG is mentioned in the API call I would expect to get a proper error message instead of a 500 internal server error. This is against a Spacewalk 2.0 environment with a PostgreSQL database as backend. Here's the list of installed Spacewalk RPMs: spacewalk-admin-2.0.1-1.el6.noarch spacewalk-backend-2.0.3-1.el6.noarch spacewalk-backend-app-2.0.3-1.el6.noarch spacewalk-backend-applet-2.0.3-1.el6.noarch spacewalk-backend-config-files-2.0.3-1.el6.noarch spacewalk-backend-config-files-common-2.0.3-1.el6.noarch spacewalk-backend-config-files-tool-2.0.3-1.el6.noarch spacewalk-backend-iss-2.0.3-1.el6.noarch spacewalk-backend-iss-export-2.0.3-1.el6.noarch spacewalk-backend-libs-2.0.3-1.el6.noarch spacewalk-backend-package-push-server-2.0.3-1.el6.noarch spacewalk-backend-server-2.0.3-1.el6.noarch spacewalk-backend-sql-2.0.3-1.el6.noarch spacewalk-backend-sql-postgresql-2.0.3-1.el6.noarch spacewalk-backend-tools-2.0.3-1.el6.noarch spacewalk-backend-xml-export-libs-2.0.3-1.el6.noarch spacewalk-backend-xmlrpc-2.0.3-1.el6.noarch spacewalk-base-2.0.3-1.el6.noarch spacewalk-base-minimal-2.0.3-1.el6.noarch spacewalk-base-minimal-config-2.0.3-1.el6.noarch spacewalk-branding-2.0.1-1.el6.noarch spacewalk-certs-tools-2.0.1-1.el6.noarch spacewalk-common-2.0.1-1.el6.noarch spacewalk-config-2.0.1-1.el6.noarch spacewalk-doc-indexes-2.0.1-1.el6.noarch spacewalk-grail-2.0.3-1.el6.noarch spacewalk-html-2.0.3-1.el6.noarch spacewalk-java-2.0.6-1.el6.noarch spacewalk-java-config-2.0.6-1.el6.noarch spacewalk-java-lib-2.0.6-1.el6.noarch spacewalk-java-postgresql-2.0.6-1.el6.noarch spacewalk-jpp-workaround-1.0.4-1.el6.noarch spacewalk-monitoring-2.0.1-1.el6.noarch spacewalk-monitoring-selinux-2.0.1-1.el6.noarch spacewalk-postgresql-2.0.1-1.el6.noarch spacewalk-pxt-2.0.3-1.el6.noarch spacewalk-repo-2.0-3.el6.noarch spacewalk-schema-2.0.2-1.el6.noarch spacewalk-search-2.0.1-1.el6.noarch spacewalk-selinux-2.0.1-1.el6.noarch spacewalk-setup-2.0.1-1.el6.noarch spacewalk-setup-jabberd-2.0.1-1.el6.noarch spacewalk-setup-postgresql-2.0.1-1.el6.noarch spacewalk-slf4j-1.6.1-6.el6.noarch spacewalk-sniglets-2.0.3-1.el6.noarch spacewalk-taskomatic-2.0.6-1.el6.noarch --- Additional comment from Tomas Lestach on 2014-09-12 13:31:13 CEST --- spacewalk.git: 7dee20bc0fa022f3101bfd1f524bed3561a9b451
Moving to MODIFIED, since the bug was fixed within upstream Bug 1057638
With the release of Red Hat Satellite 5.7 on January 12th 2015 this bug is being moved to a Closed Current Release state. The Satellite 5.7 GA Errata: - https://rhn.redhat.com/errata/RHSA-2015-0033.html Satellite 5.7 Release Notes: - https://access.redhat.com/documentation/en-US/Red_Hat_Satellite/5.7/html-single/Release_Notes/index.html Satellite Customer Portal Blog announcement for release: - https://access.redhat.com/blogs/1169563/posts/1315743 Cliff