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

Generic catch-all guard in readRep: it fires when any exception escapes while loading this step's metadata from the Pentaho repository — most commonly a broken repository connection, a missing/corrupt step attribute row, or ValueMetaFactory.getIdForValueMeta throwing because a stored 'field_type' string does not map to a known value meta type. The step-level 'nrfields' count and per-field attributes (name, type, format, currency, decimal symbols) read via rep.getStepAttribute* are the inputs at fault.

Solutions

  1. Verify the repository connection is alive and that the transformation was saved completely (no partially written step attributes).
  2. Inspect the stored field attributes for this step (field_name, field_type, field_format, etc.) and correct any missing or invalid 'field_type' value so ValueMetaFactory can resolve it.
  3. Re-open and re-save the transformation in Spoon to rewrite consistent step attributes, or restore the step configuration from a known-good export (XML/ktr).
  4. If the error persists, enable repository debug logging to identify which exact getStepAttribute call fails before re-importing the transformation.
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at engine/src/main/java/org/pentaho/di/trans/steps/parallelgzipcsv/ParGzipCsvInputMeta.java:245 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/steps/parallelgzipcsv/ParGzipCsvInputMeta.java:245

      allocate( nrfields );

      for ( int i = 0; i < nrfields; i++ ) {
        inputFields[i] = new TextFileInputField();

        inputFields[i].setName( rep.getStepAttributeString( id_step, i, "field_name" ) );
        inputFields[i].setType( ValueMetaFactory.getIdForValueMeta( rep.getStepAttributeString( id_step, i, "field_type" ) ) );
        inputFields[i].setFormat( rep.getStepAttributeString( id_step, i, "field_format" ) );
        inputFields[i].setCurrencySymbol( rep.getStepAttributeString( id_step, i, "field_currency" ) );
        inputFields[i].setDecimalSymbol( rep.getStepAttributeString( id_step, i, "field_decimal" ) );
        inputFields[i].setGroupSymbol( rep.getStepAttributeString( id_step, i, "field_group" ) );
        inputFields[i].setLength( (int) rep.getStepAttributeInteger( id_step, i, "field_length" ) );
        inputFields[i].setPrecision( (int) rep.getStepAttributeInteger( id_step, i, "field_precision" ) );
        inputFields[i].setTrimType( ValueMetaString.getTrimTypeByCode( rep.getStepAttributeString(
          id_step, i, "field_trim_type" ) ) );
      }
    } catch ( Exception e ) {
      throw new KettleException( "Unexpected error reading step information from the repository", e );
    }
  }

  @Override
  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
    try {
      rep.saveStepAttribute( id_transformation, id_step, "filename", filename );
      rep.saveStepAttribute( id_transformation, id_step, "filename_field", filenameField );
      rep.saveStepAttribute( id_transformation, id_step, "rownum_field", rowNumField );
      rep.saveStepAttribute( id_transformation, id_step, "include_filename", includingFilename );
      rep.saveStepAttribute( id_transformation, id_step, "separator", delimiter );
      rep.saveStepAttribute( id_transformation, id_step, "enclosure", enclosure );
      rep.saveStepAttribute( id_transformation, id_step, "buffer_size", bufferSize );
      rep.saveStepAttribute( id_transformation, id_step, "header", headerPresent );
      rep.saveStepAttribute( id_transformation, id_step, "lazy_conversion", lazyConversionActive );
      rep.saveStepAttribute( id_transformation, id_step, "add_filename_result", isaddresult );
      rep.saveStepAttribute( id_transformation, id_step, "parallel", runningInParallel );
      rep.saveStepAttribute( id_transformation, id_step, "encoding", encoding );

View on GitHub (pinned to f3058517a1)