{"record":{"id":"535174dbe9382298","repo":"pentaho/pentaho-kettle","slug":"sshmeta-exception-unexpectederrorreadingstepinfo","errorCode":null,"errorMessage":"SSHMeta.Exception.UnexpectedErrorReadingStepInfo","messagePattern":"SSHMeta\\.Exception\\.UnexpectedErrorReadingStepInfo","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/ssh/SSHMeta.java","lineNumber":454,"sourceCode":"      port = rep.getStepAttributeString( idStep, ATTR_PORT );\n      userName = rep.getStepAttributeString( idStep, ATTR_USER_NAME );\n      password = Encr.decryptPasswordOptionallyEncrypted( rep.getStepAttributeString( idStep, ATTR_PASSWORD ) );\n\n      usePrivateKey = rep.getStepAttributeBoolean( idStep, ATTR_USE_PRIVATE_KEY );\n      keyFileName = rep.getStepAttributeString( idStep, ATTR_KEY_FILE_NAME );\n      passPhrase =\n        Encr.decryptPasswordOptionallyEncrypted( rep.getStepAttributeString( idStep, ATTR_PASS_PHRASE ) );\n      stdOutFieldName = rep.getStepAttributeString( idStep, ATTR_STD_OUT_FIELD_NAME );\n      stdErrFieldName = rep.getStepAttributeString( idStep, ATTR_STD_ERR_FIELD_NAME );\n      timeOut = rep.getStepAttributeString( idStep, ATTR_TIME_OUT );\n      proxyHost = rep.getStepAttributeString( idStep, ATTR_PROXY_HOST );\n      proxyPort = rep.getStepAttributeString( idStep, ATTR_PROXY_PORT );\n      proxyUsername = rep.getStepAttributeString( idStep, ATTR_PROXY_USERNAME );\n      proxyPassword =\n        Encr.decryptPasswordOptionallyEncrypted( rep.getStepAttributeString( idStep, ATTR_PROXY_PASSWORD ) );\n\n    } catch ( Exception e ) {\n      throw new KettleException(\n        BaseMessages.getString( PKG, \"SSHMeta.Exception.UnexpectedErrorReadingStepInfo\" ), e );\n    }\n  }\n\n  @Override\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId idTransformation, ObjectId idStep )\n    throws KettleException {\n    try {\n      rep.saveStepAttribute( idTransformation, idStep, ATTR_DYNAMIC_COMMAND_FIELD, dynamicCommandField );\n      rep.saveStepAttribute( idTransformation, idStep, ATTR_COMMAND, command );\n      rep.saveStepAttribute( idTransformation, idStep, ATTR_COMMAND_FIELD_NAME, commandfieldname );\n      rep.saveStepAttribute( idTransformation, idStep, ATTR_PORT, port );\n      rep.saveStepAttribute( idTransformation, idStep, ATTR_SERVER_NAME, serverName );\n      rep.saveStepAttribute( idTransformation, idStep, ATTR_USER_NAME, userName );\n      rep.saveStepAttribute( idTransformation, idStep, ATTR_PASSWORD, Encr\n        .encryptPasswordIfNotUsingVariables( password ) );\n\n      rep.saveStepAttribute( idTransformation, idStep, ATTR_USE_PRIVATE_KEY, usePrivateKey );","sourceCodeStart":436,"sourceCodeEnd":472,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/ssh/SSHMeta.java#L436-L472","documentation":"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.","triggerScenarios":"readRep failing due to repository connectivity problems, missing step attributes, or corrupted encrypted password values.","commonSituations":"Repository database upgrade/migration inconsistencies; broken repository connection mid-load; step attributes deleted or written by an incompatible plugin version.","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"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// verify repository health before loading:\nboolean ok = rep.isConnected() && rep.getRepositoryMeta() != null;","typeGuard":null,"tryCatchPattern":"try {\n  stepMeta.readRep(rep, metaStore, idStep, databases);\n} catch (KettleException e) {\n  logError(\"Failed reading SSH step from repository: \" + e.getCause());\n}","preventionTips":["Keep repository schema upgraded to match the Pentaho version","Monitor repository DB connectivity for scheduled runs","Re-save steps after plugin upgrades"],"tags":["repository","serialization","metadata"],"backgroundTag":"database-query-failed","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}