pentaho/pentaho-kettle · error · KettleException
HTTPPOST.Log.NoField
Error message
HTTPPOST.Log.NoField
What it means
The HTTPPOST step is configured with 'URL is in a field?' enabled but the 'URL field name' setting is empty. processRow detects this via Utils.isEmpty(meta.getUrlField()) and throws a KettleException with 'HTTPPOST.Log.NoField' after logging the same message.
Solutions
- Open the HTTP POST step dialog and set 'URL field name' to the input field that holds the URL.
- If the URL is static instead, uncheck 'URL is in a field?' and enter the URL directly.
- Re-save the transformation after fixing the field selection.
Example fix
// before (dialog config) isUrlInField=true; urlField=""; // after isUrlInField=true; urlField="request_url"; // name of the incoming field with the URL
Defensive patterns
Strategy: validation
Validate before calling
if (meta.isUrlInField() && (meta.getUrlField() == null || meta.getUrlField().trim().isEmpty()))
throw new KettleException("URL field name required when URL-in-field is enabled"); Prevention
- Pick URL fields from the dropdown, never type freehand
- Run transformation verification before production
- Re-check settings after imports between environments
When it happens
Trigger: processRow (first-portion init) executes when meta.isUrlInField() is true and meta.getUrlField() returns an empty/null string; thrown at line 369 before any rows are processed.
Common situations: User checked 'URL field name' option but forgot to select the input field containing the URL; a saved transformation lost the field selection after renaming the field; metadata copied between environments.
Understand the failure class
Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.
Related errors
- HTTPPOST.Exception.CouldnotFindField
- HTTPPOST.Exception.CouldnotFindRequestEntityField
- HTTPPOST.Exception.ErrorFindingField
- LDIFInput.Log.NoField
- LoadFileInput.Log.NoField
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/d79aa0219116a886.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/httppost/HTTPPOST.java:369
meta = (HTTPPOSTMeta) smi;
data = (HTTPPOSTData) sdi;
Object[] r = getRow(); // Get row from input rowset & set row busy!
if ( r == null ) { // no more input to be expected...
setOutputDone();
return false;
}
if ( first ) {
first = false;
data.inputRowMeta = getInputRowMeta();
data.outputRowMeta = getInputRowMeta().clone();
meta.getFields( getTransMeta().getBowl(), data.outputRowMeta, getStepname(), null, null, this, repository,
metaStore );
if ( meta.isUrlInField() ) {
if ( Utils.isEmpty( meta.getUrlField() ) ) {
logError( BaseMessages.getString( PKG, "HTTPPOST.Log.NoField" ) );
throw new KettleException( BaseMessages.getString( PKG, "HTTPPOST.Log.NoField" ) );
}
// cache the position of the field
if ( data.indexOfUrlField < 0 ) {
String realUrlfieldName = environmentSubstitute( meta.getUrlField() );
data.indexOfUrlField = data.inputRowMeta.indexOfValue( ( realUrlfieldName ) );
if ( data.indexOfUrlField < 0 ) {
// The field is unreachable !
logError( BaseMessages.getString( PKG, "HTTPPOST.Log.ErrorFindingField", realUrlfieldName ) );
throw new KettleException( BaseMessages.getString( PKG, "HTTPPOST.Exception.ErrorFindingField",
realUrlfieldName ) );
}
}
} else {
data.realUrl = environmentSubstitute( meta.getUrl() );
}
// set body parameters
int nrargs = meta.getArgumentField().length;View on GitHub (pinned to f3058517a1)