pentaho/pentaho-kettle · error · KettleException
RssOutput.Log.GeoPointLongEmpty
Error message
RssOutput.Log.GeoPointLongEmpty
What it means
The RSS Output step throws this during processRow when AddGeoRSS is enabled but the Geo point longitude field name in the step metadata is empty. Like the latitude check, it is a startup validation meant to stop the transformation before producing an RSS feed missing geo coordinates. The twin check directly above it throws GeoPointLatEmpty.
Solutions
- Set the Geo point longitude field in the RSS Output step settings to a valid input field name.
- In code, call meta.setGeoPointLong("longitude") whenever AddGeoRSS is true.
- If GeoRSS is not needed, uncheck/disable AddGeoRSS so the validation is skipped entirely.
- Ensure both latitude and longitude are set, since the adjacent latitude check has a bug that also tests getGeoPointLong().
Example fix
// before meta.setAddGeoRSS( true ); meta.setGeoPointLong( null ); // after meta.setAddGeoRSS( true ); meta.setGeoPointLat( "latitude" ); meta.setGeoPointLong( "longitude" );
Defensive patterns
Strategy: validation
Validate before calling
if ( rssOutputMeta.AddGeoRSS() ) {
if ( rssOutputMeta.getGeoPointLong() == null || rssOutputMeta.getGeoPointLong().isEmpty() ) {
throw new IllegalStateException( "AddGeoRSS enabled but Geo point longitude field is empty" );
}
} Prevention
- Set both latitude and longitude fields together whenever GeoRSS is enabled.
- Guard against the latitude-check bug by always populating getGeoPointLong() too.
- Validate step metadata programmatically before executing generated transformations.
When it happens
Trigger: meta.AddGeoRSS() is true and Utils.isEmpty(meta.getGeoPointLong()) is true — the Geo point longitude field was left blank in the RSS Output step configuration. Thrown from processRow (called by runStep) on first row processing.
Common situations: Enabling GeoRSS in the step dialog without picking a longitude field; a duplicated step configuration where only latitude was filled in; scripting step metadata where setGeoPointLong() was never called; note the latitude check above also reads getGeoPointLong() (copy-paste bug), so an empty longitude can surface as either message depending on version.
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.GeoPointLatEmpty
- 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/ad3980e506c3735f.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/rss/impl/src/main/java/org/pentaho/di/trans/steps/rssoutput/RssOutput.java:266
}
}
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() ) );
throw new KettleException( BaseMessages.getString( PKG, "RssOutput.Log.ErrorFindingField", meta
.getGeoPointLong() ) );
}View on GitHub (pinned to f3058517a1)