pentaho/pentaho-kettle · error · KettleException
GPLoad.Log.ExitValuePsqlPath
Error message
GPLoad.Log.ExitValuePsqlPath
What it means
After execute() waits for the gpload child process, it throws a KettleException using key GPLoad.Log.ExitValuePsqlPath when the process exit value is non-zero (the code's '!= -0' test effectively means '!= 0'). The same key is used for the preceding log line, and the message includes the exit value.
Solutions
- Read the gpload process stdout/stderr in the step log to see gpload's own error report.
- Fix the underlying gpload failure (connection params, control-file content, data formatting).
- Test the identical gpload command manually from the shell as the Pentaho user.
- Confirm gpload/psql binaries and GPLOAD_HOME, PATH, LD_LIBRARY_PATH for the executing account.
Example fix
// before: step fails with exit value 2, control file references wrong schema
// after (correct meta)
databaseMeta.setHostname("gpmaster"); databaseMeta.setDBName("analytics"); // matches gpload target Defensive patterns
Strategy: try-catch
Validate before calling
ProcessBuilder pb = new ProcessBuilder(gploadPath, "--version");
if (pb.start().waitFor() != 0) {
throw new IllegalStateException("gpload client not runnable on this host");
} Try / catch
try {
execute();
} catch (KettleException ke) {
logError("gpload exited non-zero; check gpload stdout/stderr in step log", ke);
throw ke;
} Prevention
- Test the exact gpload command manually as the Pentaho user before scheduling
- Match database meta settings (host, port, db, schema, user) with gpload's target
- Monitor gpload stderr capture in step logs for the root data/connection error
When it happens
Trigger: gploadProcess.waitFor() returns any value other than 0 - gpload itself failed (bad control file, connection failure, data errors) and execute() rethrows as a KettleException.
Common situations: Wrong gpload connection settings (host/port/db/user); errors in the generated control file; data format mismatches rejected by gpload; gpload not found by the shell (exit 127).
Understand the failure class
Background: "query failed", "%w: SQL error" — wrapped database query errors in Go libraries explained — this error's family across 3 libraries.
Related errors
- GPLoad.Execption.FileDoesNotExist
- 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/93e2d21fc9461cf6.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/gpload/core/src/main/java/org/pentaho/di/trans/steps/gpload/GPLoad.java:553
gploadProcess = rt.exec( commandLine );
// any error message?
StreamLogger errorLogger = new StreamLogger( gploadProcess.getErrorStream(), "ERROR" );
// any output?
StreamLogger outputLogger = new StreamLogger( gploadProcess.getInputStream(), "OUTPUT" );
// kick them off
errorLogger.start();
outputLogger.start();
if ( wait ) {
// any error???
gpLoadExitVal = gploadProcess.waitFor();
logBasic( BaseMessages.getString( PKG, "GPLoad.Log.ExitValuePsqlPath", "" + gpLoadExitVal ) );
if ( gpLoadExitVal != -0 ) {
throw new KettleException( BaseMessages.getString( PKG, "GPLoad.Log.ExitValuePsqlPath", "" + gpLoadExitVal ) );
}
}
} catch ( KettleException ke ) {
throw ke;
} catch ( Exception ex ) {
// Don't throw the message upwards, the message contains the password.
throw new KettleException( "Error while executing \'" + commandLine + "\'. Exit value = " + gpLoadExitVal );
}
return true;
}
public boolean processRow( StepMetaInterface smi, StepDataInterface sdi ) throws KettleException {
meta = (GPLoadMeta) smi;
data = (GPLoadData) sdi;
try {
Object[] r = getRow(); // Get row from input rowset & set row busy!View on GitHub (pinned to f3058517a1)