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
- Check repository database connectivity and credentials.
- Run the repository upgrade/migration scripts if PDI was upgraded.
- Verify r_step_attribute rows exist for the failing id_step; restore from backup if corrupted.
- Retry loading — transient DB/network failures often resolve on retry.
- 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
- Verify repository DB connectivity before batch loads
- Run repository upgrade scripts after PDI upgrades
- Back up repository tables regularly
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
- AbortMeta.Exception.UnableToSaveStepInfoToRepository
- Edi2Xml.Exception.UnableToSaveStepInfoToRepository
- ERROR_0002_Cannot_Load_Job_From_Repository
- ERROR_0002
- ERROR_0003_Cannot_Save_Job_Entry
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)