{"record":{"id":"55c9833769964a40","repo":"pentaho/pentaho-kettle","slug":"error-retrieving-fastload-application-string","errorCode":null,"errorMessage":"Error retrieving fastload application string","messagePattern":"Error retrieving fastload application string","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/terafast-bulk-loader/impl/src/main/java/org/pentaho/di/trans/steps/terafastbulkloader/TeraFast.java","lineNumber":112,"sourceCode":"   *\n   * @return The string to execute.\n   *\n   * @throws KettleException\n   *           Upon any exception\n   */\n  public String createCommandLine() throws KettleException {\n    if ( StringUtils.isBlank( this.meta.getFastloadPath().getValue() ) ) {\n      throw new KettleException( \"Fastload path not set\" );\n    }\n    final StringBuilder builder = new StringBuilder();\n    try {\n      final FileObject fileObject =\n        KettleVFS.getInstance( getTransMeta().getBowl() )\n          .getFileObject( environmentSubstitute( this.meta.getFastloadPath().getValue() ) );\n      final String fastloadExec = KettleVFS.getFilename( fileObject );\n      builder.append( fastloadExec );\n    } catch ( Exception e ) {\n      throw new KettleException( \"Error retrieving fastload application string\", e );\n    }\n    // Add log error log, if set.\n    if ( StringUtils.isNotBlank( this.meta.getLogFile().getValue() ) ) {\n      try {\n        FileObject fileObject =\n          KettleVFS.getInstance( getTransMeta().getBowl() )\n            .getFileObject( environmentSubstitute( this.meta.getLogFile().getValue() ) );\n        builder.append( \" -e \" );\n        builder.append( \"\\\"\" + KettleVFS.getFilename( fileObject ) + \"\\\"\" );\n      } catch ( Exception e ) {\n        throw new KettleException( \"Error retrieving logfile string\", e );\n      }\n    }\n    return builder.toString();\n  }\n\n  protected void verifyDatabaseConnection() throws KettleException {\n    // Confirming Database Connection is defined.","sourceCodeStart":94,"sourceCodeEnd":130,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/terafast-bulk-loader/impl/src/main/java/org/pentaho/di/trans/steps/terafastbulkloader/TeraFast.java#L94-L130","documentation":"After confirming the fastload path is set, createCommandLine resolves the executable via KettleVFS (with environment substitution) to obtain its real filename. Any failure in that resolution — filesystem errors, VFS problems, bad URIs — is wrapped in a KettleException with message 'Error retrieving fastload application string', with the original exception as the cause.","triggerScenarios":"KettleVFS.getFileObject(environmentSubstitute(fastloadPath)) throws or KettleVFS.getFilename(fileObject) fails, e.g. the configured path is not a valid VFS URI, contains unresolved/illegal characters, or the file cannot be accessed.","commonSituations":"The fastload path contains unexpanded variables or special characters that break VFS resolution; the configured location points to a non-existent drive/share on Windows; a malformed file: URL was pasted into the dialog; VFS provider issues after a Pentaho upgrade.","solutions":["Check the 'cause' of this exception in the log — it names the actual VFS/IO problem.","Fix the Fastload path in the step dialog so it is a plain, valid absolute filesystem path (e.g. /usr/bin/fastload or C:\\...\\fastload.exe).","Resolve any embedded ${VARIABLE} to ensure environment substitution produces a valid path.","Verify the path exists and is readable by the user running Pentaho/Kettle.","If a shared/network path is used, confirm the mount or share is available from the executing host."],"exampleFix":"// before\nFastload path: ${TLA_HOME}/bin/fastload  // TLB_HOME never set -> VFS gets garbage\n// after\nFastload path: /opt/teradata/client/bin/fastload  // or define TLB_HOME in kettle.properties","handlingStrategy":"validation","validationCode":"String raw = meta.getFastloadPath().getValue();\nString resolved = transMeta.environmentSubstitute(raw);\njava.io.File f = new java.io.File(resolved);\nif (!f.exists() || !f.canExecute()) {\n  throw new IllegalStateException(\"Fastload executable not found or not executable: \" + resolved);\n}","typeGuard":null,"tryCatchPattern":"try {\n  trans.execute(null);\n} catch (KettleException e) {\n  if (e.getMessage() != null && e.getMessage().contains(\"Error retrieving fastload application string\")) {\n    logError(\"Fastload path could not be resolved via VFS; cause: \" + e.getCause());\n  } else {\n    throw e;\n  }\n}","preventionTips":["Use plain absolute filesystem paths for the fastload executable rather than exotic VFS URIs.","Resolve all ${VARIABLES} before execution and confirm they produce valid paths.","Test the exact path on the host running Pentaho (exists + executable).","Watch for special characters in paths that break VFS URI parsing; quote/escape them appropriately."],"tags":["teradata","fastload","vfs","path-resolution"],"backgroundTag":"file-not-found","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"}