{"record":{"id":"fb004bef86e02e30","repo":"pentaho/pentaho-kettle","slug":"gpload-execption-filedoesnotexist","errorCode":null,"errorMessage":"GPLoad.Execption.FileDoesNotExist","messagePattern":"GPLoad\\.Execption\\.FileDoesNotExist","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/gpload/core/src/main/java/org/pentaho/di/trans/steps/gpload/GPLoad.java","lineNumber":462,"sourceCode":"    throws KettleException {\n\n    // Make sure the path is not empty\n    if ( Utils.isEmpty( pathToFile ) ) {\n      throw new KettleException( exceptionMessage );\n    }\n\n    // make sure the variable substitution is not empty\n    pathToFile = environmentSubstitute( pathToFile ).trim();\n    if ( Utils.isEmpty( pathToFile ) ) {\n      throw new KettleException( exceptionMessage );\n    }\n\n    FileObject fileObject = KettleVFS.getInstance( getTransMeta().getBowl() ).getFileObject( pathToFile, getTransMeta() );\n    try {\n      // we either check the existence of the file\n      if ( checkExistenceOfFile ) {\n        if ( !fileObject.exists() ) {\n          throw new KettleException( BaseMessages.getString( PKG, \"GPLoad.Execption.FileDoesNotExist\", pathToFile ) );\n        }\n      } else { // if the file does not have to exist, the parent, or source folder, does.\n        FileObject parentFolder = fileObject.getParent();\n        if ( parentFolder.exists() ) {\n          return KettleVFS.getFilename( fileObject );\n        } else {\n          throw new KettleException( BaseMessages.getString( PKG, \"GPLoad.Exception.DirectoryDoesNotExist\",\n              parentFolder.getURL().getPath() ) );\n        }\n\n      }\n\n      // if Windows is the OS\n      if ( Const.getOS().startsWith( \"Windows\" ) ) {\n        return addQuotes( pathToFile );\n      } else {\n        return KettleVFS.getFilename( fileObject );\n      }","sourceCodeStart":444,"sourceCodeEnd":480,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/gpload/core/src/main/java/org/pentaho/di/trans/steps/gpload/GPLoad.java#L444-L480","documentation":"When checkExistenceOfFile is true, getPath() resolves the path through KettleVFS and throws this KettleException (message key GPLoad.Execption.FileDoesNotExist) if the file does not exist on the filesystem. The message includes the resolved path.","triggerScenarios":"createCommandLine calls getPath for the gpload executable with checkExistenceOfFile=true and fileObject.exists() returns false.","commonSituations":"gpload client utility not installed on the Pentaho server host; typo in the path; clustered execution where the binary exists on only one node; file deleted between configuration and execution.","solutions":["Install the Greenplum gpload client (and psql) on the machine running the transformation, or correct the path to it.","Verify the path exists and is accessible from the account running Pentaho.","If running clustered, ensure the utility is present on every node or disable clustering for this step."],"exampleFix":"// before\nString gploadPath = \"/opt/gpload/bin/gpload\"; // binary not installed\n// after\nString gploadPath = \"/usr/local/greenplum-db/bin/gpload\"; // installed client path","handlingStrategy":"validation","validationCode":"File f = new File(\"/usr/local/greenplum-db/bin/gpload\");\nif (!f.exists() || !f.canExecute()) {\n  throw new IllegalStateException(\"gpload client missing or not executable at \" + f);\n}","typeGuard":null,"tryCatchPattern":"try {\n  execute();\n} catch (KettleException ke) {\n  if (ke.getMessage().contains(\"FileDoesNotExist\")) {\n    logError(\"gpload binary not found: install Greenplum client tools\", ke);\n  }\n  throw ke;\n}","preventionTips":["Install Greenplum client tools (gpload, psql) on every Pentaho host","Use absolute paths instead of PATH-relative ones","Verify file existence from the same OS user that runs Pentaho"],"tags":["pdi","kettle","gpload","file-not-found","greenplum"],"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"}