{"record":{"id":"ad3980e506c3735f","repo":"pentaho/pentaho-kettle","slug":"rssoutput-log-geopointlongempty","errorCode":null,"errorMessage":"RssOutput.Log.GeoPointLongEmpty","messagePattern":"RssOutput\\.Log\\.GeoPointLongEmpty","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/rss/impl/src/main/java/org/pentaho/di/trans/steps/rssoutput/RssOutput.java","lineNumber":266,"sourceCode":"          }\n        }\n\n        if ( !Utils.isEmpty( meta.getItemDescription() ) ) {\n          // Let's take the index of item description field ...\n          data.indexOfFielditemdescription = data.inputRowMeta.indexOfValue( meta.getItemDescription() );\n          if ( data.indexOfFielditemdescription < 0 ) {\n            // The field is unreachable !\n            logError( BaseMessages.getString( PKG, \"RssOutput.Log.ErrorFindingField\", meta.getItemDescription() ) );\n            throw new KettleException( BaseMessages.getString( PKG, \"RssOutput.Log.ErrorFindingField\", meta\n              .getItemDescription() ) );\n          }\n        }\n        if ( meta.AddGeoRSS() ) {\n          if ( Utils.isEmpty( meta.getGeoPointLong() ) ) {\n            throw new KettleException( BaseMessages.getString( PKG, \"RssOutput.Log.GeoPointLatEmpty\" ) );\n          }\n          if ( Utils.isEmpty( meta.getGeoPointLong() ) ) {\n            throw new KettleException( BaseMessages.getString( PKG, \"RssOutput.Log.GeoPointLongEmpty\" ) );\n          }\n\n          // Let's take the index of item geopointX field ...\n          data.indexOfFielditempointx = data.inputRowMeta.indexOfValue( meta.getGeoPointLat() );\n          if ( data.indexOfFielditempointx < 0 ) {\n            // The field is unreachable !\n            logError( BaseMessages.getString( PKG, \"RssOutput.Log.ErrorFindingField\", meta.getGeoPointLat() ) );\n            throw new KettleException( BaseMessages.getString( PKG, \"RssOutput.Log.ErrorFindingField\", meta\n              .getGeoPointLat() ) );\n          }\n          // Let's take the index of item geopointY field ...\n          data.indexOfFielditempointy = data.inputRowMeta.indexOfValue( meta.getGeoPointLong() );\n          if ( data.indexOfFielditempointy < 0 ) {\n            // The field is unreachable !\n            logError( BaseMessages.getString( PKG, \"RssOutput.Log.ErrorFindingField\", meta.getGeoPointLong() ) );\n            throw new KettleException( BaseMessages.getString( PKG, \"RssOutput.Log.ErrorFindingField\", meta\n              .getGeoPointLong() ) );\n          }","sourceCodeStart":248,"sourceCodeEnd":284,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/rss/impl/src/main/java/org/pentaho/di/trans/steps/rssoutput/RssOutput.java#L248-L284","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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()."],"exampleFix":"// before\nmeta.setAddGeoRSS( true );\nmeta.setGeoPointLong( null );\n\n// after\nmeta.setAddGeoRSS( true );\nmeta.setGeoPointLat( \"latitude\" );\nmeta.setGeoPointLong( \"longitude\" );","handlingStrategy":"validation","validationCode":"if ( rssOutputMeta.AddGeoRSS() ) {\n  if ( rssOutputMeta.getGeoPointLong() == null || rssOutputMeta.getGeoPointLong().isEmpty() ) {\n    throw new IllegalStateException( \"AddGeoRSS enabled but Geo point longitude field is empty\" );\n  }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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."],"tags":["pentaho-kettle","rss-output","configuration","georss"],"backgroundTag":"empty-required-field","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}