pentaho/pentaho-kettle · error · KettleException

WriteToLog.Error.UnableToLoadFromRepository.Label

Error message

WriteToLog.Error.UnableToLoadFromRepository.Label

What it means

JobEntryWriteToLog.loadRep() throws this KettleException when reading the entry's attributes (logmessage, loglevel, logsubject) from the repository fails with a KettleDatabaseException. The offending job entry ObjectId is appended to the message and the original database exception is kept as cause.

Solutions

  1. Verify repository database connectivity and credentials
  2. Check r_jobentry_attribute rows for the id_jobentry reported in the message
  3. Run the repository upgrade/migration scripts matching your Pentaho version
  4. Retry loading after fixing DB issues; inspect the cause (KettleDatabaseException) for SQL details

Example fix

// before: loading against a stale connection
jobEntry.loadRep( rep, metaStore, staleId, databases, slaveServers );
// after: reconnect then load
rep.disconnect(); rep.connect( user, password );
jobEntry.loadRep( rep, metaStore, id_jobentry, databases, slaveServers );
Defensive patterns

Strategy: try-catch

Validate before calling

// verify repository reachable and entry exists before loadRep
if ( !rep.isConnected() ) rep.connect( user, pass );
if ( rep.getJobEntry( id_jobentry ) == null ) throw new KettleException( "Entry missing: " + id_jobentry );

Try / catch

try {
  jobEntry.loadRep( rep, metaStore, id_jobentry, databases, slaveServers );
} catch ( KettleException e ) {
  if ( e.getCause() instanceof KettleDatabaseException ) {
    logError( "Repository DB error loading entry " + id_jobentry, e );
    rep.disconnect(); rep.connect( user, pass ); // reconnect and retry once
  }
}

Prevention

When it happens

Trigger: Calling loadRep with a repository whose r_jobentry_attribute table is unavailable/corrupt, a bad connection, or an invalid id_jobentry ObjectId passed to rep.getJobEntryAttributeString.

Common situations: Database repository connection dropped mid-load; repository schema version mismatch after upgrade; referencing a deleted job entry id; DB permissions changed.

Related errors


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/2d89be0e4bcee9c0. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/job/entries/writetolog/JobEntryWriteToLog.java:116

      super.loadXML( entrynode, databases, slaveServers );
      logmessage = XMLHandler.getTagValue( entrynode, "logmessage" );
      entryLogLevel = LogLevel.getLogLevelForCode( XMLHandler.getTagValue( entrynode, "loglevel" ) );
      logsubject = XMLHandler.getTagValue( entrynode, "logsubject" );
    } catch ( Exception e ) {
      throw new KettleXMLException( BaseMessages.getString( PKG, "WriteToLog.Error.UnableToLoadFromXML.Label" ), e );

    }
  }

  @Override
  public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,
    List<SlaveServer> slaveServers ) throws KettleException {
    try {
      logmessage = rep.getJobEntryAttributeString( id_jobentry, "logmessage" );
      entryLogLevel = LogLevel.getLogLevelForCode( rep.getJobEntryAttributeString( id_jobentry, "loglevel" ) );
      logsubject = rep.getJobEntryAttributeString( id_jobentry, "logsubject" );
    } catch ( KettleDatabaseException dbe ) {
      throw new KettleException( BaseMessages.getString( PKG, "WriteToLog.Error.UnableToLoadFromRepository.Label" )
        + id_jobentry, dbe );

    }
  }

  // Save the attributes of this job entry
  //
  @Override
  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
    try {
      rep.saveJobEntryAttribute( id_job, getObjectId(), "logmessage", logmessage );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "loglevel", ( entryLogLevel != null ? entryLogLevel
        .getCode() : "" ) );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "logsubject", logsubject );
    } catch ( KettleDatabaseException dbe ) {
      throw new KettleException( BaseMessages.getString( PKG, "WriteToLog.Error.UnableToSaveToRepository.Label" )
        + id_job, dbe );
    }

View on GitHub (pinned to f3058517a1)