How to install Red Hat Satellite 5.6 using an external PostgreSQL db version higher than 8.4?

Solution Unverified - Updated -

Environment

  • Red Hat Satellite 5.6 with External/Standalone PostgreSQL database version > 8.4

Issue

  • When uploading a configuration channel the file is displayed with junk characters.

  • Taskomatic does not work as expected.

Caused by: org.quartz.SchedulerConfigException: Failure occured during job recovery. [See nested exception: org.quartz.JobPersistenceException: Couldn't retrieve trigger: Array index out of range: 2 [See nested exception: java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 2]]
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.schedulerStarted(JobStoreSupport.java:627)
        at org.quartz.core.QuartzScheduler.start(QuartzScheduler.java:494)
        at org.quartz.impl.StdScheduler.start(StdScheduler.java:143)
        at com.redhat.rhn.taskomatic.core.SchedulerKernel.startup(SchedulerKernel.java:165)
        ... 2 more
Caused by: org.quartz.JobPersistenceException: Couldn't retrieve trigger: Array index out of range: 2 [See nested exception: java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 2]
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger(JobStoreSupport.java:1571)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.recoverMisfiredJobs(JobStoreSupport.java:950)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.recoverJobs(JobStoreSupport.java:834)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport$2.execute(JobStoreSupport.java:806)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport$41.execute(JobStoreSupport.java:3729)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3763)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3725)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.recoverJobs(JobStoreSupport.java:802)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.schedulerStarted(JobStoreSupport.java:625)
        ... 5 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 2
        at org.postgresql.util.PGbytea.toBytes(PGbytea.java:76)
        at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getBytes(AbstractJdbc2ResultSet.java:2271)
        at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getBytes(AbstractJdbc2ResultSet.java:2451)
        at org.apache.commons.dbcp.DelegatingResultSet.getBytes(DelegatingResultSet.java:255)
        at org.quartz.impl.jdbcjobstore.PostgreSQLDelegate.getObjectFromBlob(PostgreSQLDelegate.java:92)
        at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.selectTrigger(StdJDBCDelegate.java:2132)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger(JobStoreSupport.java:1553)

Resolution

  • Some issues have been reported with higher versions than PostgreSQL 8.4. To fix it add the following configuration to postgresql.conf on the Red Hat Satellite server:
  * on the Satellite server:
    # rhn-satellite stop

  * on the external PostgreSQL database server:
  # service postgresql stop
  # vim /var/lib/pgsql/data/postgresql.conf
     bytea_output = 'escape'

  # service postgresql start 

* on the Satellite server:
    # rhn-satellite start

Root Cause

  • Configuration needed for external PostgreSQL database version higher than 8.4.
  • Satellite documentation bug being tracked in private Red Hat Bugzilla #1066728

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.