pentaho/pentaho-kettle · error · KettleException
RssOutput.Log.GeoPointLatEmpty
Error message
RssOutput.Log.GeoPointLatEmpty
What it means
The RSS Output step throws this during processRow when AddGeoRSS is enabled but the Geo point latitude field name configured in the step metadata is empty. It is a fail-fast validation of the step's GeoRSS settings before any row processing, so the transformation stops immediately. Note the surrounding code actually calls Utils.isEmpty(meta.getGeoPointLong()) in both checks (a copy-paste bug), but the message key reports the latitude setting as the problem.
Solutions
- Open the RSS Output step settings, ensure 'Add GeoRSS' is either unchecked or the Geo point latitude field is set to an existing input field.
- In code, call meta.setGeoPointLat("latField") before the transformation runs when AddGeoRSS is enabled.
- If you only want GeoRSS output occasionally, conditionally enable AddGeoRSS based on whether lat/long fields exist in the stream.
- Be aware of the upstream bug: both checks test getGeoPointLong(), so setting only the latitude may not clear the error on affected versions — set both fields.
Example fix
// before (dialog/step meta with GeoRSS enabled but no lat field) meta.setAddGeoRSS( true ); meta.setGeoPointLat( "" ); // after meta.setAddGeoRSS( true ); meta.setGeoPointLat( "latitude" ); meta.setGeoPointLong( "longitude" );
Defensive patterns
Strategy: validation
Validate before calling
// Before adding the RSS Output step meta to the transformation:
if ( rssOutputMeta.AddGeoRSS() ) {
if ( rssOutputMeta.getGeoPointLat() == null || rssOutputMeta.getGeoPointLat().isEmpty() ) {
throw new IllegalStateException( "AddGeoRSS enabled but Geo point latitude field is empty" );
}
} Prevention
- Whenever enabling AddGeoRSS, immediately set both lat and long fields.
- Use the step dialog's field dropdowns rather than hand-editing the ktr XML.
- Run the transformation with a preview on the hop feeding RSS Output before production.
When it happens
Trigger: meta.AddGeoRSS() is true and Utils.isEmpty(meta.getGeoPointLong()) returns true — i.e. the GeoRSS option is checked in the RSS Output step dialog while the geopoint latitude (lat) field is left blank. Raised as KettleException from processRow, invoked by runStep when the first row arrives.
Common situations: Users enable the 'Add GeoRSS' checkbox in the RSS Output step but forget to select the latitude/longitude field mappings; importing a transformation from another environment where the field dropdown resolved to an empty value; programmatically building StepMeta without calling setGeoPointLat().
Understand the failure class
Background: "must not be empty", "cannot be empty" — required-field validation errors across open-source libraries — this error's family across 41 libraries.
Related errors
- RssOutput.Log.GeoPointLongEmpty
- Error adding item to feed
- It was not possible to find operation field
- It was not possible to find table
- JobEntrySyslog.DatePatternEmpty
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/72dbea0f917bfabd.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/rss/impl/src/main/java/org/pentaho/di/trans/steps/rssoutput/RssOutput.java:263
logError( BaseMessages.getString( PKG, "RssOutput.Log.ErrorFindingField", meta.getItemTitle() ) );
throw new KettleException( BaseMessages.getString( PKG, "RssOutput.Log.ErrorFindingField", meta
.getItemTitle() ) );
}
}
if ( !Utils.isEmpty( meta.getItemDescription() ) ) {
// Let's take the index of item description field ...
data.indexOfFielditemdescription = data.inputRowMeta.indexOfValue( meta.getItemDescription() );
if ( data.indexOfFielditemdescription < 0 ) {
// The field is unreachable !
logError( BaseMessages.getString( PKG, "RssOutput.Log.ErrorFindingField", meta.getItemDescription() ) );
throw new KettleException( BaseMessages.getString( PKG, "RssOutput.Log.ErrorFindingField", meta
.getItemDescription() ) );
}
}
if ( meta.AddGeoRSS() ) {
if ( Utils.isEmpty( meta.getGeoPointLong() ) ) {
throw new KettleException( BaseMessages.getString( PKG, "RssOutput.Log.GeoPointLatEmpty" ) );
}
if ( Utils.isEmpty( meta.getGeoPointLong() ) ) {
throw new KettleException( BaseMessages.getString( PKG, "RssOutput.Log.GeoPointLongEmpty" ) );
}
// Let's take the index of item geopointX field ...
data.indexOfFielditempointx = data.inputRowMeta.indexOfValue( meta.getGeoPointLat() );
if ( data.indexOfFielditempointx < 0 ) {
// The field is unreachable !
logError( BaseMessages.getString( PKG, "RssOutput.Log.ErrorFindingField", meta.getGeoPointLat() ) );
throw new KettleException( BaseMessages.getString( PKG, "RssOutput.Log.ErrorFindingField", meta
.getGeoPointLat() ) );
}
// Let's take the index of item geopointY field ...
data.indexOfFielditempointy = data.inputRowMeta.indexOfValue( meta.getGeoPointLong() );
if ( data.indexOfFielditempointy < 0 ) {
// The field is unreachable !
logError( BaseMessages.getString( PKG, "RssOutput.Log.ErrorFindingField", meta.getGeoPointLong() ) );View on GitHub (pinned to f3058517a1)