pentaho/pentaho-kettle · error · KettleException
RssInput.Exception.ErrorFindingField
RssInput.Exception.ErrorFindingField
Error message
RssInput.Exception.ErrorFindingField
What it means
RssInput.readNextUrl throws this KettleException when the configured URL field name is non-empty but does not exist in the incoming row (inputRowMeta.indexOfValue returns -1). The step cannot read the feed URL from the stream.
Solutions
- Verify the URL field name matches an incoming stream field exactly
- Use 'Get Fields' in the step dialog to refresh the field list
- Add the URL field upstream (e.g. via Select values or a constant)
Example fix
// before urlFieldname = "url"; // stream has 'Url' // after urlFieldname = "Url";
Defensive patterns
Strategy: validation
Validate before calling
if (inputRowMeta.indexOfValue(urlFieldname) < 0) {
throw new KettleException("URL field not in stream: " + urlFieldname);
} Try / catch
try { readNextUrl(); } catch (KettleException e) {
logError("RSS URL field missing from stream: " + e.getMessage());
setErrors(1);
} Prevention
- Use 'Get Fields' to pick the URL field name
- Avoid renaming the URL field upstream after configuring the step
- Test with row preview before running the full transformation
When it happens
Trigger: The URL field name in the dialog does not match any field in the input row stream, case-sensitively.
Common situations: Upstream step renamed or removed the URL field; typo in the dialog; different field casing after a Select values step.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- AnalyticQueryMeta.Exception.SubjectFieldNotFound
- AutoDoc.Exception.FilenameFieldNotFound
- AutoDoc.Exception.FileTypeFieldNotFound
- ConcatFields.Error.FieldNotFoundInputStream
- ConcatFields.Error.TargetFieldNotFoundOutputStream
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/6ba3842e5b2cfb2c.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/rss/impl/src/main/java/org/pentaho/di/trans/steps/rssinput/RssInput.java:130
data.totalpreviousfields = data.inputRowMeta.size();
// Create convert meta-data objects that will contain Date & Number formatters
data.convertRowMeta = data.outputRowMeta.cloneToType( ValueMetaInterface.TYPE_STRING );
// Check is URL field is provided
if ( Utils.isEmpty( meta.getUrlFieldname() ) ) {
logError( BaseMessages.getString( PKG, "RssInput.Log.UrlFieldNameMissing" ) );
throw new KettleException( BaseMessages.getString( PKG, "RssInput.Log.UrlFieldNameMissing" ) );
}
// cache the position of the field
if ( data.indexOfUrlField < 0 ) {
data.indexOfUrlField = data.inputRowMeta.indexOfValue( meta.getUrlFieldname() );
if ( data.indexOfUrlField < 0 ) {
// The field is unreachable !
logError( BaseMessages.getString( PKG, "RssInput.Log.ErrorFindingField" )
+ "[" + meta.getUrlFieldname() + "]" );
throw new KettleException( BaseMessages.getString( PKG, "RssInput.Exception.ErrorFindingField", meta
.getUrlFieldname() ) );
}
}
}
// get URL field value
data.currenturl = data.inputRowMeta.getString( data.readrow, data.indexOfUrlField );
} else {
if ( data.last_url ) {
return false;
}
if ( data.urlnr >= data.urlsize ) { // finished processing!
if ( log.isDetailed() ) {
logDetailed( BaseMessages.getString( PKG, "RssInput.Log.FinishedProcessing" ) );
}
return false;View on GitHub (pinned to f3058517a1)