{"record":{"id":"2db144157a6bb438","repo":"pentaho/pentaho-kettle","slug":"unable-to-save-job-entry-of-type-telnet-to-the-repository","errorCode":null,"errorMessage":"Unable to save job entry of type 'Telnet' to the repository for id_job=","messagePattern":"Unable to save job entry of type 'Telnet' to the repository for id_job=","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/telnet/JobEntryTelnet.java","lineNumber":122,"sourceCode":"    List<SlaveServer> slaveServers ) throws KettleException {\n    try {\n      hostname = rep.getJobEntryAttributeString( id_jobentry, \"hostname\" );\n      port = rep.getJobEntryAttributeString( id_jobentry, \"port\" );\n      timeout = rep.getJobEntryAttributeString( id_jobentry, \"timeout\" );\n    } catch ( KettleException dbe ) {\n      throw new KettleException(\n        \"Unable to load job entry of type 'Telnet' exists from the repository for id_jobentry=\" + id_jobentry,\n        dbe );\n    }\n  }\n\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {\n    try {\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"hostname\", hostname );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"port\", port );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"timeout\", timeout );\n    } catch ( KettleDatabaseException dbe ) {\n      throw new KettleException( \"Unable to save job entry of type 'Telnet' to the repository for id_job=\"\n        + id_job, dbe );\n    }\n  }\n\n  public String getPort() {\n    return port;\n  }\n\n  public String getRealPort() {\n    return environmentSubstitute( getPort() );\n  }\n\n  public void setPort( String port ) {\n    this.port = port;\n  }\n\n  public void setHostname( String hostname ) {\n    this.hostname = hostname;","sourceCodeStart":104,"sourceCodeEnd":140,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/telnet/JobEntryTelnet.java#L104-L140","documentation":"Thrown by JobEntryTelnet.saveRep when writing the Telnet entry's attributes (hostname, port, timeout) to the repository fails with a KettleDatabaseException. It means the repository rejected the attribute write for this job entry. The underlying database exception is attached as the cause.","triggerScenarios":"Calling saveRep for a Telnet job entry when the repository database is unavailable, the attribute table is locked/corrupt, or a constraint is violated while saving hostname/port/timeout values.","commonSituations":"Database repository connection dropped during save; oversized hostname/port values exceeding column widths; read-only database user; concurrent save conflicts in clustered setups.","solutions":["Verify the repository database is reachable and writable","Check the wrapped KettleDatabaseException for the specific SQL failure","Confirm attribute values (especially port/timeout) fit the repository column sizes","Retry the save after resolving locks or permission issues"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"if ( rep == null || !rep.isConnected() ) { throw new IllegalStateException( \"Repository unavailable\" ); }","typeGuard":null,"tryCatchPattern":"try { entry.saveRep( rep, metaStore, id_job ); } catch ( KettleException e ) { log.error( \"Failed saving Telnet entry for job \" + id_job, e.getCause() ); throw e; }","preventionTips":["Keep attribute values within repository column limits","Use writable repository credentials","Avoid concurrent saves to the same job","Repair repository tables if saves repeatedly fail"],"tags":["kettle","repository","database"],"backgroundTag":"database-write-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"}