{"record":{"id":"f2f620ad8dfff108","repo":"pentaho/pentaho-kettle","slug":"rssinput-log-urlfieldnamemissing","errorCode":"RssInput.Log.UrlFieldNameMissing","errorMessage":"RssInput.Log.UrlFieldNameMissing","messagePattern":"RssInput\\.Log\\.UrlFieldNameMissing","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/rss/impl/src/main/java/org/pentaho/di/trans/steps/rssinput/RssInput.java","lineNumber":120,"sourceCode":"        return false;\n      }\n      if ( first ) {\n        first = false;\n        data.inputRowMeta = getInputRowMeta();\n        data.outputRowMeta = data.inputRowMeta.clone();\n        meta.getFields( getTransMeta().getBowl(), data.outputRowMeta, getStepname(), null, null, this, repository,\n          metaStore );\n\n        // Get total previous fields\n        data.totalpreviousfields = data.inputRowMeta.size();\n\n        // Create convert meta-data objects that will contain Date & Number formatters\n        data.convertRowMeta = data.outputRowMeta.cloneToType( ValueMetaInterface.TYPE_STRING );\n\n        // Check is URL field is provided\n        if ( Utils.isEmpty( meta.getUrlFieldname() ) ) {\n          logError( BaseMessages.getString( PKG, \"RssInput.Log.UrlFieldNameMissing\" ) );\n          throw new KettleException( BaseMessages.getString( PKG, \"RssInput.Log.UrlFieldNameMissing\" ) );\n        }\n\n        // cache the position of the field\n        if ( data.indexOfUrlField < 0 ) {\n          data.indexOfUrlField = data.inputRowMeta.indexOfValue( meta.getUrlFieldname() );\n          if ( data.indexOfUrlField < 0 ) {\n            // The field is unreachable !\n            logError( BaseMessages.getString( PKG, \"RssInput.Log.ErrorFindingField\" )\n              + \"[\" + meta.getUrlFieldname() + \"]\" );\n            throw new KettleException( BaseMessages.getString( PKG, \"RssInput.Exception.ErrorFindingField\", meta\n              .getUrlFieldname() ) );\n          }\n        }\n\n      }\n      // get URL field value\n      data.currenturl = data.inputRowMeta.getString( data.readrow, data.indexOfUrlField );\n","sourceCodeStart":102,"sourceCodeEnd":138,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/rss/impl/src/main/java/org/pentaho/di/trans/steps/rssinput/RssInput.java#L102-L138","documentation":"RssInput.readNextUrl logs and throws a KettleException when the URL field name configured for the step is empty. The step needs a stream field containing the feed URL to fetch; without a field name it cannot proceed.","triggerScenarios":"The 'URL fieldname' setting in the RSS Input step dialog is blank (meta.getUrlFieldname() is null or empty).","commonSituations":"Step configured without selecting the URL column; dialog setting lost after copying a step between transformations; XML config missing the url field tag.","solutions":["Open the RSS Input step and select the input field that contains the feed URL","Ensure the upstream step provides a URL column","Re-enter step settings if they were lost during copy/paste"],"exampleFix":"// before\nurlFieldname = \"\";\n// after\nurlFieldname = \"feed_url\";","handlingStrategy":"validation","validationCode":"if (urlFieldname == null || urlFieldname.trim().isEmpty()) {\n  throw new KettleException(\"URL field name must be set in RSS Input step\");\n}","typeGuard":null,"tryCatchPattern":"try { processRow(); } catch (KettleException e) {\n  logError(\"RSS Input configuration error: \" + e.getMessage());\n  setErrors(1);\n}","preventionTips":["Always select a URL field in the RSS Input dialog","Verify step settings after copying steps between transformations","Add a step-level configuration check via the check() remarks in Spoon"],"tags":["kettle","rss-input","configuration","missing-field"],"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"}