pentaho/pentaho-kettle · error · KettleException
Rest.Log.NoField
Rest.Log.NoField
Error message
Rest.Log.NoField
What it means
Raised in calcURL (from processRow) when the step is configured with 'URL is in a field?' but the 'URL field name' setting is empty. It is logged via logError('URL field name is missing!') and then rethrown as a KettleException, aborting the transformation.
Solutions
- Open the REST step dialog, keep 'URL is in a field?' checked, and select the field that contains the URL from the incoming stream.
- If the URL is actually static, uncheck 'URL is in a field?' and fill the URL field directly.
- Run the step's metadata check (validate transformation) before execution to catch the missing field earlier.
Example fix
// before (step settings) url_in_field=true; url_field="" // throws Rest.Log.NoField // after url_in_field=true; url_field="request_url" // field must exist in the incoming row stream
Defensive patterns
Strategy: validation
Validate before calling
// Before execution, check the step metadata
if (restMeta.isUrlInField() && (restMeta.getUrlField() == null || restMeta.getUrlField().trim().isEmpty())) {
throw new IllegalStateException("REST step: URL field name required when 'URL is in a field' is enabled");
} Try / catch
try { processRow(); } catch (KettleException e) {
if (e.getMessage().contains("URL field name is missing")) { /* fix step metadata */ }
throw e;
} Prevention
- Whenever you enable 'URL is in a field', immediately select the field in the same dialog session.
- Run transformation validation (F9 / verify) before scheduling.
- Avoid hand-editing step XML; use the dialog so dependent settings stay consistent.
When it happens
Trigger: meta.isUrlInField() is true and meta.getUrlField() is null/empty (Utils.isEmpty) when calcURL runs during processRow.
Common situations: User checked 'URL is in a field' in the REST step dialog but forgot to select the incoming field that holds the URL; step metadata migrated from a static-URL configuration left the dynamic option enabled with no field set.
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/ce2f5f71322e0c2a.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/rest/core/src/main/java/org/pentaho/di/trans/steps/rest/Rest.java:476
logError( Const.getStackTracker( e ) );
stopAll();
setOutputDone(); // signal end to receiver(s)
return false;
}
}
return true;
}
/**
* Calculate URL
*
* @throws KettleException
*/
private void calcURL() throws KettleException {
if ( meta.isUrlInField() ) {
if ( Utils.isEmpty( meta.getUrlField() ) ) {
logError( BaseMessages.getString( PKG, "Rest.Log.NoField" ) );
throw new KettleException( BaseMessages.getString( PKG, "Rest.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 !
throw new KettleException(
BaseMessages.getString( PKG, "Rest.Exception.ErrorFindingField", realUrlfieldName ) );
}
}
} else {
// Static URL
data.realUrl = environmentSubstitute( meta.getUrl() );
}
}
/**View on GitHub (pinned to f3058517a1)