pentaho/pentaho-kettle · error · KettleException
Following required files are not accessible:
Error message
Following required files are not accessible:
What it means
BaseFileInputStepUtils.handleMissingFiles() throws a KettleException listing all input files that exist but are not accessible (e.g. unreadable) when errors are not ignored. The step aborts because it cannot read required input files.
Solutions
- Grant the executing user read permission (chmod/chown or ACL) on the listed files.
- Run the transformation under an account with access to the file location.
- Check that files are not locked by another process and that the mount/share is healthy.
- Enable ignore-error handling for non-accessible files if continuing is acceptable.
Example fix
// before bash: kettle transformation reads /data/in.csv owned by root, mode 600 -> not accessible // after chmod 644 /data/in.csv # or chown kettle:kettle /data/in.csv
Defensive patterns
Strategy: validation
Validate before calling
for (String file : files) {
java.io.File f = new java.io.File(file);
if (f.exists() && !f.canRead()) {
throw new IllegalStateException("Not accessible: " + file);
}
} Try / catch
try {
trans.execute(null);
} catch (KettleException e) {
if (e.getMessage().startsWith("Following required files are not accessible")) {
// fix permissions or credentials, then retry
} else { throw e; }
} Prevention
- Verify read permissions for the account running the transformation.
- Test file access from the execution node before scheduling jobs.
- Watch for file locks from writers and coordinate schedules.
- Run health checks on NFS/SMB/HDFS mounts feeding the pipeline.
When it happens
Trigger: Resolved input files exist but cannot be opened by the transformation process: permission denied, locked by another process, or a directory/ACL blocks read access, with 'ignore' error handling disabled.
Common situations: Files owned by another user; running the transformation under a service account lacking read permission; NFS/SMB mount issues; files held by a writer process; HDFS/VFS permission misconfiguration.
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
- FileErrorHandlerMissingFiles.Exception.CouldNotCreateNonAccessibleFile
- Following required files are missing:
- JsonOutput.Error.OpenNewFile
- The function call createFolder is not valid.
- We can not delete file [
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/36d193a02399c17d.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/file/BaseFileInputStepUtils.java:64
errorHandler.handleNonExistantFile( fileObject );
}
} else {
throw new KettleException( "Following required files are missing: " + message );
}
}
List<FileObject> nonAccessibleFiles = files.getNonAccessibleFiles();
if ( !nonAccessibleFiles.isEmpty() ) {
String message = FileInputList.getRequiredFilesDescription( nonAccessibleFiles );
if ( log.isBasic() ) {
log.logBasic( "Required files", "WARNING: Not accessible " + message );
}
if ( isErrorIgnored ) {
for ( FileObject fileObject : nonAccessibleFiles ) {
errorHandler.handleNonAccessibleFile( fileObject );
}
} else {
throw new KettleException( "Following required files are not accessible: " + message );
}
}
}
/**
* Adds <code>String</code> value meta with given name if not present and returns index
*
* @param rowMeta
* @param fieldName
* @return Index in row meta of value meta with <code>fieldName</code>
*/
public static int addValueMeta( String stepName, RowMetaInterface rowMeta, String fieldName ) {
ValueMetaInterface valueMeta = new ValueMetaString( fieldName );
valueMeta.setOrigin( stepName );
// add if doesn't exist
int index = -1;
if ( !rowMeta.exists( valueMeta ) ) {
index = rowMeta.size();View on GitHub (pinned to f3058517a1)