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

DataGridMeta.readRep loads the step's configuration from the repository (fields, data lines). Any repository access or conversion exception during this load is wrapped in this KettleException, aborting the step's loading from the repository.

Solutions

  1. Check the chained cause for the underlying repository/database error and fix connectivity or schema first.
  2. Verify repository schema version matches the Pentaho engine (run the repository upgrade/migration tool if needed).
  3. Re-save the transformation or re-create the Data Grid step to rewrite its repository attributes.
  4. Inspect r_step_attribute rows for the step's id_step and repair/restore missing attribute entries.

Example fix

// no code fix; operational repair example
-- verify attributes exist
SELECT * FROM r_step_attribute WHERE id_step = ? AND attribute_key LIKE 'field%';
Defensive patterns

Strategy: try-catch

Validate before calling

// before loading, verify repository reachability
if (!rep.isConnected()) throw new IllegalStateException("Repository not connected");

Type guard

boolean canLoad(Repository rep){ return rep != null && rep.isConnected(); }

Try / catch

try { meta.readRep(rep, metaStore, id_step, databases); }
catch (KettleException e) {
  logError("Repository read failed for step: " + e.getCause(), e);
  // surface actionable DB error, don't swallow
}

Prevention

When it happens

Trigger: readRep is invoked when opening a transformation stored in a repository, and repository reads (getStepAttributeString/int/table queries) fail or return data that breaks parsing — e.g. missing attribute rows, corrupted repository rows, or DB connectivity errors mid-read.

Common situations: Repository database schema out of sync with the engine version; network/database outage while opening a transformation; rows deleted or truncated in r_step_attribute.

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/99cf76f46226909a. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/steps/datagrid/DataGridMeta.java:472

        fieldPrecision[i] = (int) rep.getStepAttributeInteger( idStep, i, "field_precision" );
        setEmptyString[i] = rep.getStepAttributeBoolean( idStep, i, "set_empty_string", false );
        fieldNullIf[i] = rep.getStepAttributeString( idStep, i, FIELD_NULL_IF );
      }

      int nrLines = (int) rep.getStepAttributeInteger( idStep, "nr_lines" );
      dataLines = new ArrayList<>();
      for ( int i = 0; i < nrLines; i++ ) {
        List<String> line = new ArrayList<>();

        for ( int f = 0; f < nrfields; f++ ) {
          String item = rep.getStepAttributeString( idStep, i, "item_" + f );
          line.add( item );
        }

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

  @Override
  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId idTransformation, ObjectId idStep ) throws KettleException {
    try {
      for ( int i = 0; i < fieldName.length; i++ ) {
        if ( fieldName[i] != null && fieldName[i].length() != 0 ) {
          rep.saveStepAttribute( idTransformation, idStep, i, FIELD_NAME, fieldName[i] );
          rep.saveStepAttribute( idTransformation, idStep, i, "field_type", fieldType[i] );
          rep.saveStepAttribute( idTransformation, idStep, i, "field_format", fieldFormat[i] );
          rep.saveStepAttribute( idTransformation, idStep, i, "field_currency", currency[i] );
          rep.saveStepAttribute( idTransformation, idStep, i, "field_decimal", decimal[i] );
          rep.saveStepAttribute( idTransformation, idStep, i, "field_group", group[i] );
          rep.saveStepAttribute( idTransformation, idStep, i, "field_length", fieldLength[i] );
          rep.saveStepAttribute( idTransformation, idStep, i, "field_precision", fieldPrecision[i] );
          rep.saveStepAttribute( idTransformation, idStep, i, "set_empty_string", setEmptyString[i] );
          rep.saveStepAttribute( idTransformation, idStep, i, FIELD_NULL_IF, fieldNullIf[i] );

View on GitHub (pinned to f3058517a1)