pentaho/pentaho-kettle · error · KettleException
SSHMeta.Exception.UnexpectedErrorReadingStepInfo
Error message
SSHMeta.Exception.UnexpectedErrorReadingStepInfo
What it means
SSHMeta.Exception.UnexpectedErrorReadingStepInfo is thrown when loading SSH step settings from a repository (readRep). Any exception from repository attribute lookups or password decryption is wrapped in a KettleException with this message. It indicates the stored repository representation of the step could not be read.
Solutions
- Verify the repository (database or file) connection is healthy
- Re-save the step in Spoon so attributes are rewritten to the repository
- Check the wrapped cause for the underlying repository error (SQL, decryption)
- Restore the step/transformation from a repository backup
Defensive patterns
Strategy: try-catch
Validate before calling
// verify repository health before loading: boolean ok = rep.isConnected() && rep.getRepositoryMeta() != null;
Try / catch
try {
stepMeta.readRep(rep, metaStore, idStep, databases);
} catch (KettleException e) {
logError("Failed reading SSH step from repository: " + e.getCause());
} Prevention
- Keep repository schema upgraded to match the Pentaho version
- Monitor repository DB connectivity for scheduled runs
- Re-save steps after plugin upgrades
When it happens
Trigger: readRep failing due to repository connectivity problems, missing step attributes, or corrupted encrypted password values.
Common situations: Repository database upgrade/migration inconsistencies; broken repository connection mid-load; step attributes deleted or written by an incompatible plugin version.
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
- Unable to save step information to the repository for…
- Unable to save step information to the repository for…
- Unexpected error reading step information from the…
- AnalyticQueryMeta.Exception.UnexpectedErrorInReadingStepInfo…
- AnalyticQueryMeta.Exception.UnableToSaveStepInfoToRepository
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/535174dbe9382298.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/ssh/SSHMeta.java:454
port = rep.getStepAttributeString( idStep, ATTR_PORT );
userName = rep.getStepAttributeString( idStep, ATTR_USER_NAME );
password = Encr.decryptPasswordOptionallyEncrypted( rep.getStepAttributeString( idStep, ATTR_PASSWORD ) );
usePrivateKey = rep.getStepAttributeBoolean( idStep, ATTR_USE_PRIVATE_KEY );
keyFileName = rep.getStepAttributeString( idStep, ATTR_KEY_FILE_NAME );
passPhrase =
Encr.decryptPasswordOptionallyEncrypted( rep.getStepAttributeString( idStep, ATTR_PASS_PHRASE ) );
stdOutFieldName = rep.getStepAttributeString( idStep, ATTR_STD_OUT_FIELD_NAME );
stdErrFieldName = rep.getStepAttributeString( idStep, ATTR_STD_ERR_FIELD_NAME );
timeOut = rep.getStepAttributeString( idStep, ATTR_TIME_OUT );
proxyHost = rep.getStepAttributeString( idStep, ATTR_PROXY_HOST );
proxyPort = rep.getStepAttributeString( idStep, ATTR_PROXY_PORT );
proxyUsername = rep.getStepAttributeString( idStep, ATTR_PROXY_USERNAME );
proxyPassword =
Encr.decryptPasswordOptionallyEncrypted( rep.getStepAttributeString( idStep, ATTR_PROXY_PASSWORD ) );
} catch ( Exception e ) {
throw new KettleException(
BaseMessages.getString( PKG, "SSHMeta.Exception.UnexpectedErrorReadingStepInfo" ), e );
}
}
@Override
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId idTransformation, ObjectId idStep )
throws KettleException {
try {
rep.saveStepAttribute( idTransformation, idStep, ATTR_DYNAMIC_COMMAND_FIELD, dynamicCommandField );
rep.saveStepAttribute( idTransformation, idStep, ATTR_COMMAND, command );
rep.saveStepAttribute( idTransformation, idStep, ATTR_COMMAND_FIELD_NAME, commandfieldname );
rep.saveStepAttribute( idTransformation, idStep, ATTR_PORT, port );
rep.saveStepAttribute( idTransformation, idStep, ATTR_SERVER_NAME, serverName );
rep.saveStepAttribute( idTransformation, idStep, ATTR_USER_NAME, userName );
rep.saveStepAttribute( idTransformation, idStep, ATTR_PASSWORD, Encr
.encryptPasswordIfNotUsingVariables( password ) );
rep.saveStepAttribute( idTransformation, idStep, ATTR_USE_PRIVATE_KEY, usePrivateKey );View on GitHub (pinned to f3058517a1)