pentaho/pentaho-kettle · error · KettleException
YamlInput.Log.RequiredNotAccessibleFilesMissing
Error message
YamlInput.Log.RequiredNotAccessibleFilesMissing
What it means
YamlInput throws this KettleException in handleMissingFiles when files exist but are not accessible (cannot be opened/read by the process). FileInputList reports them via getNonAccessibleFiles(), and the step fails fast rather than reading a partial file set.
Solutions
- Check and grant read permission on the listed files for the user running the JVM (chmod/chown or ACLs).
- Confirm the path points to a regular file, not a directory.
- Close any process holding an exclusive lock on the file.
- If the file is optional, set its 'Required' flag to No so the step skips it instead of failing.
Example fix
// before: bash # ls -l /data/input.yaml -> -rw------- root root // after: run as the right user or open permissions chmod 644 /data/input.yaml # or run PDI as a user in the file's group
Defensive patterns
Strategy: validation
Validate before calling
// pre-flight accessibility check as the same user that runs PDI
File f = new File(path);
if (!f.canRead() || f.isDirectory()) throw new IllegalStateException("Not readable: " + path); Try / catch
try { trans.execute(...); } catch (KettleException e) {
if (e.getMessage().contains("RequiredNotAccessibleFiles")) { fixPermissionsFromLog(e.getMessage()); }
throw e;
} Prevention
- Run the PDI/JVM service account with read access to all input directories.
- Check permissions after deploys/OS migration; include file access in smoke tests.
- Avoid pointing steps at directories or locked files.
When it happens
Trigger: processRow -> handleMissingFiles; data.files.getNonAccessibleFiles() is non-empty, i.e. the FileObject exists but can't be read (no read permission, locked by another process, or a directory instead of a file).
Common situations: Running the transformation/PDI server under a service account lacking read permission on the file, files encrypted or locked by another application on Windows, path points to a directory, or SELinux/ACL restrictions on Linux.
Understand the failure class
Background: Permission denied / not authorized / 403 Forbidden: access-control rejections when the caller lacks the required role, grant, or ownership — this error's family across 18 libraries.
Related errors
- AccessInput.Log.RequiredNotAccessibleFilesMissing
- Following required files are not accessible:
- AbsSecurityManager.ERROR_0005_INSUFFICIENT_PRIVELEGES
- AbsSecurityProvider.ERROR_0002_UNABLE_TO_ACCESS_IS_ALLOWED
- AbsSecurityProvider.ERROR_0003_UNABLE_TO_ACCESS_GET_ALLOWED_ACTIONS
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/c35b5c6b3e0d86fa.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/yaml-input/impl/src/main/java/org/pentaho/di/trans/steps/yamlinput/YamlInput.java:73
}
private void handleMissingFiles() throws KettleException {
List<FileObject> nonExistantFiles = data.files.getNonExistantFiles();
if ( nonExistantFiles.size() != 0 ) {
String message = FileInputList.getRequiredFilesDescription( nonExistantFiles );
logError( BaseMessages.getString( PKG, "YamlInput.Log.RequiredFilesTitle" ), BaseMessages.getString(
PKG, "YamlInput.Log.RequiredFiles", message ) );
throw new KettleException( BaseMessages.getString( PKG, "YamlInput.Log.RequiredFilesMissing", message ) );
}
List<FileObject> nonAccessibleFiles = data.files.getNonAccessibleFiles();
if ( nonAccessibleFiles.size() != 0 ) {
String message = FileInputList.getRequiredFilesDescription( nonAccessibleFiles );
logError( BaseMessages.getString( PKG, "YamlInput.Log.RequiredFilesTitle" ), BaseMessages.getString(
PKG, "YamlInput.Log.RequiredNotAccessibleFiles", message ) );
throw new KettleException( BaseMessages.getString(
PKG, "YamlInput.Log.RequiredNotAccessibleFilesMissing", message ) );
}
}
private boolean readNextString() {
try {
data.readrow = getRow(); // Grab another row ...
if ( data.readrow == null ) {
// finished processing!
if ( log.isDetailed() ) {
logDetailed( BaseMessages.getString( PKG, "YamlInput.Log.FinishedProcessing" ) );
}
return false;
}
if ( first ) {View on GitHub (pinned to f3058517a1)