pentaho/pentaho-kettle · error · KettleException

Unexpected error reading step information from the…

Error message

Unexpected error reading step information from the repository

What it means

SQLFileOutputMeta.readRep() loads the step's settings from the Pentaho Repository via rep.getStepAttribute* calls and wraps any failure in a KettleException 'Unexpected error reading step information from the repository'. It is a catch-all wrapper around repository reads for attributes like file_add_date, file_add_time, DoNotOpenNewFileInit.

Solutions

  1. Check the chained cause: verify the repository database is reachable and credentials are valid
  2. Validate the repository schema (r_step_attribute etc.) and repair/upgrade it with the repository upgrade tools
  3. Re-save the transformation/step from Spoon to rewrite its repository attributes
  4. Open the transformation from a file export instead to isolate whether the repository or the metadata is at fault

Example fix

// before: repository attribute hand-edited to a bad value
UPDATE r_step_attribute SET value_str='maybe' WHERE code='DoNotOpenNewFileInit';
// after
UPDATE r_step_attribute SET value_str='N' WHERE code='DoNotOpenNewFileInit';
Defensive patterns

Strategy: try-catch

Validate before calling

// Verify repository health before loading:
try ( Connection c = repositoryDatabase.connect() ) {
  // ensure R_STEP_ATTRIBUTE is reachable
  c.createStatement().executeQuery( "SELECT 1 FROM R_STEP_ATTRIBUTE" );
}

Try / catch

try {
  transMeta = repository.loadTransformation( id, null );
} catch ( KettleException e ) {
  if ( e.getMessage().contains( "reading step information from the repository" ) ) {
    log.error( "Repository read failed: {}", e.getCause() );
    // fall back to loading a file export
  }
}

Prevention

When it happens

Trigger: Opening a transformation from a repository when the repository is unreachable, the underlying database schema (r_step_attribute tables) is missing or corrupted, or a stored attribute value cannot be converted (e.g. non-boolean value for a boolean attribute).

Common situations: Repository database down or network interruption mid-load; repository schema version mismatch after a Pentaho upgrade; direct DB edits to repository tables that broke attribute values; permission problems reading repository tables.

Understand the failure class

Background: Database query failed: Internal Server Error 500s wrapping SQL, Prisma, and connection failures — what to check first — this error's family across 16 libraries.

Related errors


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

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/steps/sqlfileoutput/SQLFileOutputMeta.java:539

      createTable = rep.getStepAttributeBoolean( id_step, "create" );
      encoding = rep.getStepAttributeString( id_step, "encoding" );
      dateformat = rep.getStepAttributeString( id_step, "dateformat" );
      AddToResult = rep.getStepAttributeBoolean( id_step, "addtoresult" );
      StartNewLine = rep.getStepAttributeBoolean( id_step, "startnewline" );

      fileName = rep.getStepAttributeString( id_step, "file_name" );
      extension = rep.getStepAttributeString( id_step, "file_extention" );
      fileAppended = rep.getStepAttributeBoolean( id_step, "file_append" );
      splitEvery = (int) rep.getStepAttributeInteger( id_step, "file_split" );
      stepNrInFilename = rep.getStepAttributeBoolean( id_step, "file_add_stepnr" );
      partNrInFilename = rep.getStepAttributeBoolean( id_step, "file_add_partnr" );
      dateInFilename = rep.getStepAttributeBoolean( id_step, "file_add_date" );
      timeInFilename = rep.getStepAttributeBoolean( id_step, "file_add_time" );
      createparentfolder = rep.getStepAttributeBoolean( id_step, "create_parent_folder" );
      DoNotOpenNewFileInit = rep.getStepAttributeBoolean( id_step, "DoNotOpenNewFileInit" );

    } catch ( Exception e ) {
      throw new KettleException( "Unexpected error reading step information from the repository", e );
    }
  }

  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
    try {
      rep.saveDatabaseMetaStepAttribute( id_transformation, id_step, "id_connection", databaseMeta );
      rep.saveStepAttribute( id_transformation, id_step, "schema", schemaName );
      rep.saveStepAttribute( id_transformation, id_step, "table", tablename );
      rep.saveStepAttribute( id_transformation, id_step, "truncate", truncateTable );
      rep.saveStepAttribute( id_transformation, id_step, "create", createTable );
      rep.saveStepAttribute( id_transformation, id_step, "encoding", encoding );
      rep.saveStepAttribute( id_transformation, id_step, "dateformat", dateformat );
      rep.saveStepAttribute( id_transformation, id_step, "addtoresult", AddToResult );
      rep.saveStepAttribute( id_transformation, id_step, "startnewline", StartNewLine );

      rep.saveStepAttribute( id_transformation, id_step, "file_name", fileName );
      rep.saveStepAttribute( id_transformation, id_step, "file_extention", extension );
      rep.saveStepAttribute( id_transformation, id_step, "file_append", fileAppended );

View on GitHub (pinned to f3058517a1)