mikeski.net kotlin java javascript hugo development

mikeski.net development blog

Pentaho BI Server 5 – Missing data in jobId quartzjobkey.error_0002

My Pentaho scheduler was showing no data when I looked at it in the browser, and when I checked the logs I got an error that was along the lines of:

Missing data in jobId quartzjobkey.error_0002

This seemed to be caused by a JOB_NAME in the quartz hsql database that stores the scheduled job metadata. Specifically, bad job name was:

admin PentahoSystemVersionCheck 1428946692234

The other jobs all had names like:

mike.baranski:GeneratedContentCleaner:1393966687322

Looked to me like the whitespace in the job name was causing problems. I did not need the version checker, so I just opted to delete the job and hope that my job listing came back. There are several steps to accomplish this.

First, the Pentaho server uses a JNDI context definition to access the Quartz database. This definition is in ./tomcat/webapps/pentaho/META-INF/context.xml, and the relevant bit is:

 <Resource name="jdbc/Quartz" auth="Container" type="javax.sql.DataSource"
                factory="org.apache.commons.dbcp.BasicDataSourceFactory" maxActive="20" maxIdle="5"
                maxWait="10000" username="pentaho_user" password="********"
                driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:hsql://localhost/quartz"
                validationQuery="select count(*) from INFORMATION_SCHEMA.SYSTEM_SEQUENCES"/>
mike@pentaho:~/biserver-ce$ java -jar tomcat/lib/hsqldb-1.8.0.jar --inlineRc URL=jdbc:hsqldb:hsql://localhost/quartz,USER=pentaho_user
pentaho_user's password: password
JDBC Connection established to a HSQL Database Engine v. 1.8.0 database as 'PENTAHO_USER'.
SqlTool v. 1.55.                        (SqlFile processor v. 1.135)
Distribution is permitted under the terms of the HSQLDB license.
(c) 2004-2005 Blaine Simpson and the HSQLDB Development Group.
 
    \q    to Quit.
    \?    lists Special Commands.
    :?    lists Buffer/Editing commands.
    *?    lists PL commands (including alias commands).
 
SPECIAL Commands begin with '\' and execute when you hit ENTER.
BUFFER Commands begin with ':' and execute when you hit ENTER.
COMMENTS begin with '/*' and end with the very next '*/'.
PROCEDURAL LANGUAGE commands begin with '*' and end when you hit ENTER.
All other lines comprise SQL Statements.
  SQL Statements are terminated by either a blank line (which moves the
  statement into the buffer without executing) or a line ending with ';'
  (which executes the statement).
  SQL Statements may begin with '/PLVARNAME' and/or contain *{PLVARNAME}s.
 
sql>

Now we are able to run commands on the database. Do note that hsql does not commit automatically, so I had to run the following to make this go away. Note the first statement to make sure I get the item I want to delete (and only the one I want to delete) before I remove records:

SELECT * FROM QRTZ5_SIMPLE_TRIGGERS WHERE TRIGGER_NAME like 'admin%'
DELETE FROM QRTZ5_SIMPLE_TRIGGERS WHERE TRIGGER_NAME like 'admin%'
DELETE FROM QRTZ5_TRIGGERS WHERE TRIGGER_NAME like 'admin%'
DELETE from QRTZ5_JOB_DETAILS WHERE JOB_NAME like 'admin%'
COMMIT

SELECT * FROM QRTZ5_SIMPLE_TRIGGERS WHERE TRIGGER_NAME like 'admin%'
DELETE FROM QRTZ5_SIMPLE_TRIGGERS WHERE TRIGGER_NAME like 'admin%'
DELETE FROM QRTZ5_TRIGGERS WHERE TRIGGER_NAME like 'admin%'
DELETE from QRTZ5_JOB_DETAILS WHERE JOB_NAME like 'admin%'
COMMIT

Now the offending job is gone and the UI will load the jobs that are there.