pentaho/pentaho-kettle · error · KettleException
Following required files are not accessible:
Error message
Following required files are not accessible:
What it means
During init (handleMissingFiles), if any configured required files exist but cannot be accessed (e.g., no read permission), the step throws a KettleException listing them. The step will not start with inaccessible required inputs.
Solutions
- Grant read permission on the listed files/directories to the Pentaho/Kettle process user.
- Fix or remount the network share referenced by the paths.
- Mark files as not required ('N') if they are optional.
- Run the transformation under a user with proper access.
Example fix
// shell // before: -rw------- file.txt // after chmod 644 file.txt # or chown pentaho file.txt
Defensive patterns
Strategy: validation
Validate before calling
for (String path : configuredPaths) {
File f = new File(path);
if (f.exists() && !f.canRead()) {
throw new IllegalStateException("Not accessible: " + path);
}
} Try / catch
try { trans.execute(); } catch (KettleException e) { if (e.getMessage().startsWith("Following required files are not accessible")) { /* fix permissions */ } throw e; } Prevention
- Run Pentaho under a user with read access to all input paths
- Check mounts/shares before scheduling
- Verify permissions after deployments
When it happens
Trigger: FileInputList.getNonAccessibleFiles() is non-empty at init: files exist but the process lacks read/execute permission or the mount is unavailable.
Common situations: Files owned by another user without read permission; unreadable directories in the path; network shares not mounted; service account lacks access.
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
- AbsSecurityManager.ERROR_0005_INSUFFICIENT_PRIVELEGES
- AbsSecurityProvider.ERROR_0002_UNABLE_TO_ACCESS_IS_ALLOWED
- AbsSecurityProvider.ERROR_0003_UNABLE_TO_ACCESS_GET_ALLOWED_ACTIONS
- AccessInput.Log.RequiredNotAccessibleFilesMissing
- : permission not allowed
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/c6107787214703d0.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/getfilenames/GetFileNames.java:289
private void handleMissingFiles() throws KettleException {
if ( meta.isdoNotFailIfNoFile() && data.files.nrOfFiles() == 0 ) {
logBasic( BaseMessages.getString( PKG, "GetFileNames.Log.NoFile" ) );
return;
}
List<FileObject> nonExistantFiles = data.files.getNonExistantFiles();
if ( nonExistantFiles.size() != 0 ) {
String message = FileInputList.getRequiredFilesDescription( nonExistantFiles );
logBasic( "ERROR: Missing " + message );
throw new KettleException( "Following required files are missing: " + message );
}
List<FileObject> nonAccessibleFiles = data.files.getNonAccessibleFiles();
if ( nonAccessibleFiles.size() != 0 ) {
String message = FileInputList.getRequiredFilesDescription( nonAccessibleFiles );
logBasic( "WARNING: Not accessible " + message );
throw new KettleException( "Following required files are not accessible: " + message );
}
}
public boolean init( StepMetaInterface smi, StepDataInterface sdi ) {
meta = (GetFileNamesMeta) smi;
data = (GetFileNamesData) sdi;
if ( super.init( smi, sdi ) ) {
//Set Embedded NamedCluter MetatStore Provider Key so that it can be passed to VFS
if ( getTransMeta().getNamedClusterEmbedManager() != null ) {
getTransMeta().getNamedClusterEmbedManager()
.passEmbeddedMetastoreKey( this, getTransMeta().getEmbeddedMetastoreProviderKey() );
}
try {
// Create the output row meta-data
data.outputRowMeta = new RowMeta();View on GitHub (pinned to f3058517a1)