pentaho/pentaho-kettle · error · KettleException

HTTPPOSTMeta.Exception.UnexpectedErrorReadingStepInfo

Error message

HTTPPOSTMeta.Exception.UnexpectedErrorReadingStepInfo

What it means

HTTPPOSTMeta.readRep loads step settings from a repository; any Exception while reading step attributes is wrapped in a KettleException with 'HTTPPOSTMeta.Exception.UnexpectedErrorReadingStepInfo'. It indicates repository/DB-level trouble while reading the step's saved metadata.

Solutions

  1. Check repository database connectivity and credentials.
  2. Run the repository upgrade/migration scripts if PDI was upgraded.
  3. Verify r_step_attribute rows exist for the failing id_step; restore from backup if corrupted.
  4. Retry loading — transient DB/network failures often resolve on retry.
  5. Inspect the wrapped cause (e.getCause()) for the underlying SQL error.

Example fix

// before
// repository pointing at an old, non-migrated schema
// after
// apply repository upgrade scripts for the current PDI version, then reconnect and reload the transformation
Defensive patterns

Strategy: try-catch

Validate before calling

try (Connection c = DriverManager.getConnection(dbUrl, user, pass)) {
  if (!c.isValid(5)) throw new IllegalStateException("Repository DB not reachable");
}

Try / catch

try {
  meta.readRep(rep, metaStore, id_step, databases);
} catch (KettleException ke) {
  log.error("Read step info failed: " + ke.getCause(), ke);
  // check repository DB health, then retry
}

Prevention

When it happens

Trigger: readRep queries rep.getStepAttributeString(...) for the step's attributes; any Exception (DB connectivity, missing repository tables, transaction issues) at line 536 is caught and rethrown as KettleException.

Common situations: Database repository unreachable or credentials expired; r_step_attribute table corrupted or migrated from an incompatible Pentaho version; network drop mid-load; repository schema not upgraded after a PDI upgrade.

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/692c1804ead32ceb. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/steps/httppost/HTTPPOSTMeta.java:536

        argumentField[i] = rep.getStepAttributeString( id_step, i, "arg_name" );
        argumentParameter[i] = rep.getStepAttributeString( id_step, i, "arg_parameter" );
        argumentHeader[i] = rep.getStepAttributeBoolean( id_step, i, "arg_header" );
      }

      int nrquery = rep.countNrStepAttributes( id_step, "query_name" );
      allocateQuery( nrquery );

      for ( int i = 0; i < nrquery; i++ ) {
        queryField[i] = rep.getStepAttributeString( id_step, i, "query_name" );
        queryParameter[i] = rep.getStepAttributeString( id_step, i, "query_parameter" );
      }

      fieldName = rep.getStepAttributeString( id_step, "result_name" );
      resultCodeFieldName = rep.getStepAttributeString( id_step, "result_code" );
      responseTimeFieldName = rep.getStepAttributeString( id_step, "response_time" );
      responseHeaderFieldName = rep.getStepAttributeString( id_step, "response_header" );
    } catch ( Exception e ) {
      throw new KettleException( BaseMessages.getString(
        PKG, "HTTPPOSTMeta.Exception.UnexpectedErrorReadingStepInfo" ), e );
    }
  }

  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
    try {
      rep.saveStepAttribute( id_transformation, id_step, "postafile", postafile );
      rep.saveStepAttribute( id_transformation, id_step, "encoding", encoding );
      rep.saveStepAttribute( id_transformation, id_step, "url", url );
      rep.saveStepAttribute( id_transformation, id_step, "urlInField", urlInField );
      rep.saveStepAttribute( id_transformation, id_step, "urlField", urlField );
      rep.saveStepAttribute( id_transformation, id_step, "requestEntity", requestEntity );
      rep.saveStepAttribute( id_transformation, id_step, "httpLogin", httpLogin );
      rep.saveStepAttribute( id_transformation, id_step, "httpPassword", Encr
        .encryptPasswordIfNotUsingVariables( httpPassword ) );
      rep.saveStepAttribute( id_transformation, id_step, "proxyHost", proxyHost );
      rep.saveStepAttribute( id_transformation, id_step, "proxyPort", proxyPort );

View on GitHub (pinned to f3058517a1)