pentaho/pentaho-kettle · error · KettleException
GPLoad.Execption.FileDoesNotExist
Error message
GPLoad.Execption.FileDoesNotExist
What it means
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.
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.
Example fix
// before String gploadPath = "/opt/gpload/bin/gpload"; // binary not installed // after String gploadPath = "/usr/local/greenplum-db/bin/gpload"; // installed client path
Defensive patterns
Strategy: validation
Validate before calling
File f = new File("/usr/local/greenplum-db/bin/gpload");
if (!f.exists() || !f.canExecute()) {
throw new IllegalStateException("gpload client missing or not executable at " + f);
} Try / catch
try {
execute();
} catch (KettleException ke) {
if (ke.getMessage().contains("FileDoesNotExist")) {
logError("gpload binary not found: install Greenplum client tools", ke);
}
throw ke;
} Prevention
- 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
When it happens
Trigger: createCommandLine calls getPath for the gpload executable with checkExistenceOfFile=true and fileObject.exists() returns false.
Common situations: 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.
Understand the failure class
Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.
Related errors
- GPLoad.Log.ExitValuePsqlPath
- Error while closing output
- Error while executing \'" + commandLine + "\'. Exit value =…
- exceptionMessage
- GPload.Exception.DataFileMissing
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/fb004bef86e02e30.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/gpload/core/src/main/java/org/pentaho/di/trans/steps/gpload/GPLoad.java:462
throws KettleException {
// Make sure the path is not empty
if ( Utils.isEmpty( pathToFile ) ) {
throw new KettleException( exceptionMessage );
}
// make sure the variable substitution is not empty
pathToFile = environmentSubstitute( pathToFile ).trim();
if ( Utils.isEmpty( pathToFile ) ) {
throw new KettleException( exceptionMessage );
}
FileObject fileObject = KettleVFS.getInstance( getTransMeta().getBowl() ).getFileObject( pathToFile, getTransMeta() );
try {
// we either check the existence of the file
if ( checkExistenceOfFile ) {
if ( !fileObject.exists() ) {
throw new KettleException( BaseMessages.getString( PKG, "GPLoad.Execption.FileDoesNotExist", pathToFile ) );
}
} else { // if the file does not have to exist, the parent, or source folder, does.
FileObject parentFolder = fileObject.getParent();
if ( parentFolder.exists() ) {
return KettleVFS.getFilename( fileObject );
} else {
throw new KettleException( BaseMessages.getString( PKG, "GPLoad.Exception.DirectoryDoesNotExist",
parentFolder.getURL().getPath() ) );
}
}
// if Windows is the OS
if ( Const.getOS().startsWith( "Windows" ) ) {
return addQuotes( pathToFile );
} else {
return KettleVFS.getFilename( fileObject );
}View on GitHub (pinned to f3058517a1)