pentaho/pentaho-kettle · error · KettleException

SelectValuesMeta.Exception.UnexpectedErrorReadingStepInfoFro…

Error message

SelectValuesMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository

What it means

readRep() wraps any exception while loading SelectValues step attributes from a repository in a KettleException using the localized key 'SelectValuesMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository'. It indicates repository access or attribute decoding failed while reconstructing this step's metadata.

Solutions

  1. Check the underlying cause: verify repository database connectivity and credentials
  2. Confirm the transformation/step exists in the repository and id_step is valid
  3. Check repository table integrity (r_step_attribute) and user permissions
  4. Re-open and re-save the transformation in Spoon to rewrite the step attributes
Defensive patterns

Strategy: try-catch

Validate before calling

// before load
if (!repoConnectivityOk(repository)) throw new IllegalStateException("Repository unavailable");

Try / catch

try { meta.readRep(rep, metaStore, stepId, databases, metaStore != null ? metaStore : null, variables); } catch (KettleException e) { logError("Repository read failed for step " + stepId + ": " + e.getCause(), e); }

Prevention

When it happens

Trigger: Calling readRep() during transformation load when the Repository.getStepAttributeString calls fail (connection lost, repository object missing, invalid id_step, repository schema problems).

Common situations: Loading a transformation from a Pentaho repository whose DB connection is broken; corrupted r_step_attribute rows; permission issues reading step attributes; id_step pointing at a deleted step.

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/445debce1cbe8799. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/steps/selectvalues/SelectValuesMeta.java:572

        meta[i].setPrecision( (int) rep.getStepAttributeInteger( id_step, i, getRepCode( "META_PRECISION" ) ) );
        meta[i].setStorageType( ValueMetaBase.getStorageType( rep.getStepAttributeString( id_step, i, getRepCode(
            "META_STORAGE_TYPE" ) ) ) );
        meta[i].setConversionMask( rep.getStepAttributeString( id_step, i, getRepCode( "META_CONVERSION_MASK" ) ) );
        meta[i].setDateFormatLenient( Boolean.parseBoolean( rep.getStepAttributeString( id_step, i, getRepCode(
            "META_DATE_FORMAT_LENIENT" ) ) ) );
        meta[i].setDateFormatLocale( rep.getStepAttributeString( id_step, i, getRepCode(
            "META_DATE_FORMAT_LOCALE" ) ) );
        meta[i].setDateFormatTimeZone( rep.getStepAttributeString( id_step, i, getRepCode(
            "META_DATE_FORMAT_TIMEZONE" ) ) );
        meta[i].setLenientStringToNumber( Boolean.parseBoolean( rep.getStepAttributeString( id_step, i, getRepCode(
            "META_LENIENT_STRING_TO_NUMBER" ) ) ) );
        meta[i].setDecimalSymbol( rep.getStepAttributeString( id_step, i, getRepCode( "META_DECIMAL" ) ) );
        meta[i].setGroupingSymbol( rep.getStepAttributeString( id_step, i, getRepCode( "META_GROUPING" ) ) );
        meta[i].setCurrencySymbol( rep.getStepAttributeString( id_step, i, getRepCode( "META_CURRENCY" ) ) );
        meta[i].setEncoding( rep.getStepAttributeString( id_step, i, getRepCode( "META_ENCODING" ) ) );
      }
    } catch ( Exception e ) {
      throw new KettleException( BaseMessages.getString( PKG,
          "SelectValuesMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository" ), e );
    }
  }

  @Override
  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step )
    throws KettleException {
    try {
      for ( int i = 0; i < selectFields.length; i++ ) {
        rep.saveStepAttribute( id_transformation, id_step, i, getRepCode( "FIELD_NAME" ), selectFields[i].getName() );
        rep.saveStepAttribute( id_transformation, id_step, i, getRepCode( "FIELD_RENAME" ), selectFields[i]
            .getRename() );
        rep.saveStepAttribute( id_transformation, id_step, i, getRepCode( "FIELD_LENGTH" ), selectFields[i]
            .getLength() );
        rep.saveStepAttribute( id_transformation, id_step, i, getRepCode( "FIELD_PRECISION" ), selectFields[i]
            .getPrecision() );
      }
      rep.saveStepAttribute( id_transformation, id_step, getRepCode( "SELECT_UNSPECIFIED" ),

View on GitHub (pinned to f3058517a1)