pentaho/pentaho-kettle · error · KettleException

RestMeta.Exception.UnexpectedErrorReadingStepInfo

RestMeta.Exception.UnexpectedErrorReadingStepInfo

Error message

RestMeta.Exception.UnexpectedErrorReadingStepInfo

What it means

RestMeta.readRep wraps any exception from reading the step's attributes from the repository into a KettleException with this message. It indicates an unexpected failure while loading REST step configuration from a Pentaho repository (database or file).

Solutions

  1. Verify repository connectivity and credentials
  2. Upgrade/repair the repository schema via the repository tools
  3. Re-save the step to rewrite its attributes
  4. Check repository logs for the underlying exception (wrapped as cause)
Defensive patterns

Strategy: try-catch

Try / catch

try {
  stepMeta.readRep(rep, metaStore, idStep, databases);
} catch (KettleException e) {
  logError("Repository read failed: " + e.getCause());
}

Prevention

When it happens

Trigger: Repository connection failure, missing repository object/tables, or repository API exception while calling getStepAttributeString for the REST step's attributes.

Common situations: Repository database down or credentials changed; repository schema outdated (needs upgrade); corrupted repository entry.

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/35cb46061c503a1c. Report an issue: GitHub.

Appendix: source

Thrown at plugins/rest/core/src/main/java/org/pentaho/di/trans/steps/rest/RestMeta.java:672

      for ( int i = 0; i < nrHeaders; i++ ) {
        headerField[i] = rep.getStepAttributeString( idStep, i, TAG_HEADER_FIELD );
        headerName[i] = rep.getStepAttributeString( idStep, i, TAG_HEADER_NAME );
      }
      for ( int i = 0; i < nrParams; i++ ) {
        parameterField[i] = rep.getStepAttributeString( idStep, i, TAG_PARAMETER_FIELD );
        parameterName[i] = rep.getStepAttributeString( idStep, i, TAG_PARAMETER_NAME );
      }
      for ( int i = 0; i < nrMatrixParams; i++ ) {
        matrixParameterField[i] = rep.getStepAttributeString( idStep, i, TAG_MATRIX_PARAMETER_FIELD );
        matrixParameterName[i] = rep.getStepAttributeString( idStep, i, TAG_MATRIX_PARAMETER_NAME );
      }

      fieldName = rep.getStepAttributeString( idStep, TAG_RESULT_NAME );
      resultCodeFieldName = rep.getStepAttributeString( idStep, TAG_RESULT_CODE );
      responseTimeFieldName = rep.getStepAttributeString( idStep, TAG_RESPONSE_TIME );
      responseHeaderFieldName = rep.getStepAttributeString( idStep, TAG_RESPONSE_HEADER );
    } catch ( Exception e ) {
      throw new KettleException(
        BaseMessages.getString( PKG, "RestMeta.Exception.UnexpectedErrorReadingStepInfo" ), e );
    }
  }

  @Override
  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId idTransformation, ObjectId idStep ) throws KettleException {
    try {
      rep.saveStepAttribute( idTransformation, idStep, TAG_APPLICATION_TYPE, applicationType );
      rep.saveStepAttribute( idTransformation, idStep, TAG_METHOD, method );
      rep.saveStepAttribute( idTransformation, idStep, TAG_URL, url );
      rep.saveStepAttribute( idTransformation, idStep, TAG_METHOD_FIELD_NAME, methodFieldName );

      rep.saveStepAttribute( idTransformation, idStep, TAG_DYNAMIC_METHOD, dynamicMethod );
      rep.saveStepAttribute( idTransformation, idStep, TAG_URL_IN_FIELD, urlInField );
      rep.saveStepAttribute( idTransformation, idStep, TAG_URL_FIELD, urlField );
      rep.saveStepAttribute( idTransformation, idStep, TAG_BODY_FIELD, bodyField );
      rep.saveStepAttribute( idTransformation, idStep, TAG_HTTP_LOGIN, httpLogin );
      rep.saveStepAttribute( idTransformation, idStep, TAG_HTTP_PASSWORD, Encr

View on GitHub (pinned to f3058517a1)