{"record":{"id":"bfbb428a80797248","repo":"pentaho/pentaho-kettle","slug":"rssoutput-log-filenameempty","errorCode":null,"errorMessage":"RssOutput.Log.FilenameEmpty","messagePattern":"RssOutput\\.Log\\.FilenameEmpty","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/rss/impl/src/main/java/org/pentaho/di/trans/steps/rssoutput/RssOutput.java","lineNumber":148,"sourceCode":"        }\n\n        // get filename field index\n        data.indexOfFieldfilename = data.inputRowMeta.indexOfValue( meta.getFileNameField() );\n        if ( data.indexOfFieldfilename < 0 ) {\n          // The field is unreachable !\n          logError( BaseMessages.getString( PKG, \"RssOutput.Log.ErrorFindingField\", meta.getFileNameField() ) );\n          throw new KettleException( BaseMessages.getString( PKG, \"RssOutput.Log.ErrorFindingField\", meta\n            .getFileNameField() ) );\n        }\n\n      } else {\n        data.filename = buildFilename();\n      }\n\n      // Check if filename is empty..\n      if ( Utils.isEmpty( data.filename ) ) {\n        logError( BaseMessages.getString( PKG, \"RssOutput.Log.FilenameEmpty\" ) );\n        throw new KettleException( BaseMessages.getString( PKG, \"RssOutput.Log.FilenameEmpty\" ) );\n      }\n\n      // Do we need to create parent folder ?\n      if ( meta.isCreateParentFolder() ) {\n        // Check for parent folder\n        FileObject parentfolder = null;\n        try {\n          // Get parent folder\n          parentfolder = KettleVFS.getInstance( getTransMeta().getBowl() )\n            .getFileObject( data.filename, getTransMeta() ).getParent();\n          if ( !parentfolder.exists() ) {\n            if ( log.isDetailed() ) {\n              logDetailed( BaseMessages.getString( PKG, \"RssOutput.Log.ParentFolderExists\", parentfolder\n                .getName().toString() ) );\n            }\n            parentfolder.createFolder();\n            if ( log.isDetailed() ) {\n              logDetailed( BaseMessages.getString( PKG, \"RssOutput.Log.CanNotCreateParentFolder\", parentfolder","sourceCodeStart":130,"sourceCodeEnd":166,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/rss/impl/src/main/java/org/pentaho/di/trans/steps/rssoutput/RssOutput.java#L130-L166","documentation":"RssOutput checks whether the resolved output filename is empty (Utils.isEmpty) after either building it from settings or reading it from the filename field. If empty, it logs and throws a KettleException with 'RssOutput.Log.FilenameEmpty'.","triggerScenarios":"Filename field in the incoming row is null or empty string, or built filename is blank (e.g. filename template resolves to empty), while 'filename in field' mode or variable-based filename yields nothing.","commonSituations":"Filename field value missing on a row (null cell upstream); variable ${...} in filename not set in that environment; running on an agent where the variable substitution fails.","solutions":["Ensure every incoming row has a non-empty value for the filename field (filter or default nulls upstream).","Verify any variables used in the filename are defined (kettle.properties or run configuration).","Set a fallback constant filename in the step dialog if field values are unreliable."],"exampleFix":"// before\nString filename = row.getString(\"filename\"); // may be null\n// after\nString filename = Utils.isEmpty(row.getString(\"filename\")) ? \"/tmp/output.rss\" : row.getString(\"filename\");","handlingStrategy":"validation","validationCode":"Object v = row[filenameIdx];\nif (v == null || v.toString().trim().isEmpty()) {\n  throw new KettleException(\"Filename value is empty on incoming row\");\n}","typeGuard":null,"tryCatchPattern":"if (Utils.isEmpty(data.filename)) { /* set fallback or filter row before RSS Output */ }","preventionTips":["Filter out rows with null/empty filename fields upstream","Define all filename variables in kettle.properties","Configure a default filename as fallback"],"tags":["kettle","rss-output","empty-value","filename"],"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"}