pentaho/pentaho-kettle · error · KettleException
HTTPMeta.Exception.UnexpectedErrorReadingStepInfo
HTTPMeta.Exception.UnexpectedErrorReadingStepInfo
Error message
HTTPMeta.Exception.UnexpectedErrorReadingStepInfo
What it means
HTTPMeta.readRep fails while loading the step's configuration from a repository. Any repository access error during attribute reading is wrapped in KettleException 'HTTPMeta.Exception.UnexpectedErrorReadingStepInfo'.
Solutions
- Verify repository database connectivity and credentials.
- Reopen the transformation in Spoon to refresh the repository session.
- Inspect the step's rows in R_STEP_ATTRIBUTE for corruption; recreate the step and re-save.
- Check the repository schema version matches your Pentaho version (run the upgrade scripts).
Example fix
// No code fix; operational remedy: // before: transformation loaded against stale DB repo connection // after: reconnect repository (Tools > Repository > Reconnect) and reopen the transformation
Defensive patterns
Strategy: retry
Validate before calling
// verify repository connectivity before loading transformations if ( !rep.isConnected() || !rep.testConnection() ) throw new IllegalStateException( "repository unreachable" );
Try / catch
try { loadRep( rep, metaStore, id_step, ... ); } catch ( KettleException e ) {
logError( "Repository read failed, retrying once: " + e.getMessage(), e );
loadRep( rep, metaStore, id_step, ... ); // retry after reconnect
} Prevention
- Keep repository DB connections healthy (timeouts, connection pooling)
- Verify repository schema version after Pentaho upgrades
- Avoid concurrent writes to the same transformation
When it happens
Trigger: readRep throws while calling rep.getStepAttributeString for url, request headers, or result fields — typically a repository connectivity/session error or corrupted step metadata row in the R_STEP_ATTRIBUTE table.
Common situations: Database repository unreachable mid-session; stale/corrupted repository record for the step; permissions problem on repository tables; repository schema version mismatch.
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
- AddSequenceMeta.Exception.UnableToSaveStepInfo
- ColumnExistsMeta.Exception.UnableToSaveStepInfo
- ColumnExistsMeta.Exception.UnexpectedErrorReadingStepInfo
- CreditCardValidatorMeta.Exception.UnableToSaveStepInfo
- CubeInputMeta.Exception.UnableToSaveStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/176d55f49b8cc2fa.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/http/HTTPMeta.java:476
int nrheaders = rep.countNrStepAttributes( id_step, "header_name" );
allocate( nrargs, nrheaders );
for ( int i = 0; i < nrargs; i++ ) {
argumentField[i] = rep.getStepAttributeString( id_step, i, "arg_name" );
argumentParameter[i] = rep.getStepAttributeString( id_step, i, "arg_parameter" );
}
for ( int i = 0; i < nrheaders; i++ ) {
headerField[i] = rep.getStepAttributeString( id_step, i, "header_name" );
headerParameter[i] = rep.getStepAttributeString( id_step, i, "header_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, "HTTPMeta.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, "url", url );
rep.saveStepAttribute( id_transformation, id_step, "urlInField", urlInField );
rep.saveStepAttribute( id_transformation, id_step, "urlField", urlField );
rep.saveStepAttribute( id_transformation, id_step, "encoding", encoding );
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 );
rep.saveStepAttribute( id_transformation, id_step, "socketTimeout", socketTimeout );
rep.saveStepAttribute( id_transformation, id_step, "connectionTimeout", connectionTimeout );
rep.saveStepAttribute( id_transformation, id_step, "closeIdleConnectionsTime", closeIdleConnectionsTime );View on GitHub (pinned to f3058517a1)