pentaho/pentaho-kettle · error · KettleException
RssOutput.Log.CanNotCreateParentFolder
Error message
RssOutput.Log.CanNotCreateParentFolder
What it means
When 'create parent folder' is enabled, RssOutput resolves the parent directory of the output file via VFS and creates it. If that creation throws, it logs and throws a KettleException with 'RssOutput.Log.CanNotCreateParentFolder' naming the parent folder.
Solutions
- Check OS-level permissions for the user running Pentaho on the target parent directory.
- Verify the output path is valid for the OS (no illegal characters, correct separators).
- Pre-create the directory manually if creation via VFS keeps failing, and uncheck 'create parent folder'.
- Confirm the VFS scheme/connection (e.g. SFTP credentials) is configured if writing to remote locations.
Example fix
// before
String output = "/data/rss/${FEED_NAME}/out.xml"; // dir not creatable
// after
String output = "/tmp/rss_output/out.xml"; // writable dir, or pre-create /data/rss/ with correct ownership Defensive patterns
Strategy: validation
Validate before calling
File dir = new File(outputPath).getParentFile();
if (dir != null && !dir.exists() && !dir.mkdirs()) {
throw new KettleException("Cannot create parent folder: " + dir);
} Try / catch
try {
parentFolder.createFolder();
} catch (FileSystemException e) {
logError("Cannot create parent folder " + parentFolder + ": " + e.getMessage(), e);
} Prevention
- Run Pentaho as a user with write access to the target directory
- Validate output paths for OS-legal characters
- Pre-create directories in deployment scripts
When it happens
Trigger: FileObject folder creation (folder.createFolder / VFS call) throws during processRow when meta.isCreateParentFolder() is true — path invalid, insufficient filesystem permissions, or unsupported URI scheme.
Common situations: Writing to a directory the Pentaho user cannot create (permission denied on Linux, read-only share); malformed path (illegal characters on Windows); VFS cannot resolve the scheme (sftp/other without credentials).
Understand the failure class
Background: mkdir permission denied (EACCES): failed to create directory errors explained — this error's family across 32 libraries.
Related errors
- JsonOutput.Error.ErrorCreatingParentFolder
- GetSubFolders.Exception.NoAccessibleFiles
- PropertyOutput.Log.CanNotCreateParentFolder
- AbsSecurityManager.ERROR_0005_INSUFFICIENT_PRIVELEGES
- AbsSecurityProvider.ERROR_0002_UNABLE_TO_ACCESS_IS_ALLOWED
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/56c2ef202cc557b3.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/rss/impl/src/main/java/org/pentaho/di/trans/steps/rssoutput/RssOutput.java:174
// Get parent folder
parentfolder = KettleVFS.getInstance( getTransMeta().getBowl() )
.getFileObject( data.filename, getTransMeta() ).getParent();
if ( !parentfolder.exists() ) {
if ( log.isDetailed() ) {
logDetailed( BaseMessages.getString( PKG, "RssOutput.Log.ParentFolderExists", parentfolder
.getName().toString() ) );
}
parentfolder.createFolder();
if ( log.isDetailed() ) {
logDetailed( BaseMessages.getString( PKG, "RssOutput.Log.CanNotCreateParentFolder", parentfolder
.getName().toString() ) );
}
}
} catch ( Exception e ) {
// The field is unreachable !
logError( BaseMessages.getString( PKG, "RssOutput.Log.CanNotCreateParentFolder", parentfolder
.getName().toString() ) );
throw new KettleException( BaseMessages.getString(
PKG, "RssOutput.Log.CanNotCreateParentFolder", parentfolder.getName().toString() ) );
} finally {
if ( parentfolder != null ) {
try {
parentfolder.close();
} catch ( Exception ex ) { /* Ignore */
}
}
}
}
if ( !meta.isCustomRss() ) {
// Let's check for mandatory fields ...
if ( Utils.isEmpty( meta.getChannelTitle() ) ) {
logError( BaseMessages.getString( PKG, "RssOutput.Log.ChannelTitleMissing" ) );
setErrors( 1 );
stopAll();View on GitHub (pinned to f3058517a1)