pentaho/pentaho-kettle · error · KettleException
HTTP.Log.NoField
HTTP.Log.NoField
Error message
HTTP.Log.NoField
What it means
The HTTP step is configured with 'URL in field?' enabled, but the name of the field that holds the URL is empty. processRow detects this before reading rows and throws KettleException 'HTTP.Log.NoField' after logging the same message.
Solutions
- Open the HTTP step dialog and fill in the 'URL field name' with the input stream field that contains the URL.
- If the URL is static, disable 'URL in field' and set the URL directly.
- Re-export/re-save the transformation to repair missing metadata.
Example fix
// before (meta) meta.setUrlInField( true ); meta.setUrlField( "" ); // left blank // after meta.setUrlInField( true ); meta.setUrlField( "url" ); // existing input field containing the URL
Defensive patterns
Strategy: validation
Validate before calling
if ( meta.isUrlInField() && Utils.isEmpty( meta.getUrlField() ) ) {
throw new IllegalStateException( "URL field name is required when 'URL in field' is enabled" );
} Prevention
- Whenever enabling 'URL in field', immediately set the field name
- Use the step's Check/verify option before running the transformation
- Document required input fields at the transformation level
When it happens
Trigger: meta.isUrlInField() is true and Utils.isEmpty(meta.getUrlField()) — i.e., the 'URL field name' input box was left blank in the step configuration.
Common situations: User enabled 'Accept URL in field' but forgot to type the field name; importing a transformation where the field name got lost; renaming/copying steps between transformations without reconfiguring.
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
- ChangeFileEncoding.Error.FilenameFieldMissing
- ChangeFileEncoding.Error.TargetFilenameFieldMissing
- ColumnExists.Error.TablenameFieldMissing
- GetFilesRowsCount.Log.NoField
- GetTableNames.Log.NoSchemaField
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/d16fb361fd56b119.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/http/HTTP.java:302
meta = (HTTPMeta) smi;
data = (HTTPData) 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 ) {
data.outputRowMeta = getInputRowMeta().clone();
data.inputRowMeta = getInputRowMeta();
meta.getFields( getTransMeta().getBowl(), data.outputRowMeta, getStepname(), null, null, this, repository,
metaStore );
if ( meta.isUrlInField() ) {
if ( Utils.isEmpty( meta.getUrlField() ) ) {
logError( BaseMessages.getString( PKG, "HTTP.Log.NoField" ) );
throw new KettleException( BaseMessages.getString( PKG, "HTTP.Log.NoField" ) );
}
// cache the position of the field
if ( data.indexOfUrlField < 0 ) {
String realUrlfieldName = environmentSubstitute( meta.getUrlField() );
data.indexOfUrlField = getInputRowMeta().indexOfValue( realUrlfieldName );
if ( data.indexOfUrlField < 0 ) {
// The field is unreachable !
logError( BaseMessages.getString( PKG, "HTTP.Log.ErrorFindingField", realUrlfieldName ) );
throw new KettleException( BaseMessages.getString( PKG, "HTTP.Exception.ErrorFindingField",
realUrlfieldName ) );
}
}
} else {
data.realUrl = environmentSubstitute( meta.getUrl() );
}
// check for headersView on GitHub (pinned to f3058517a1)