{"record":{"id":"36d193a02399c17d","repo":"pentaho/pentaho-kettle","slug":"following-required-files-are-not-accessible","errorCode":null,"errorMessage":"Following required files are not accessible: ","messagePattern":"Following required files are not accessible: ","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/file/BaseFileInputStepUtils.java","lineNumber":64,"sourceCode":"          errorHandler.handleNonExistantFile( fileObject );\n        }\n      } else {\n        throw new KettleException( \"Following required files are missing: \" + message );\n      }\n    }\n\n    List<FileObject> nonAccessibleFiles = files.getNonAccessibleFiles();\n    if ( !nonAccessibleFiles.isEmpty() ) {\n      String message = FileInputList.getRequiredFilesDescription( nonAccessibleFiles );\n      if ( log.isBasic() ) {\n        log.logBasic( \"Required files\", \"WARNING: Not accessible \" + message );\n      }\n      if ( isErrorIgnored ) {\n        for ( FileObject fileObject : nonAccessibleFiles ) {\n          errorHandler.handleNonAccessibleFile( fileObject );\n        }\n      } else {\n        throw new KettleException( \"Following required files are not accessible: \" + message );\n      }\n    }\n  }\n\n  /**\n   * Adds <code>String</code> value meta with given name if not present and returns index\n   *\n   * @param rowMeta\n   * @param fieldName\n   * @return Index in row meta of value meta with <code>fieldName</code>\n   */\n  public static int addValueMeta( String stepName, RowMetaInterface rowMeta, String fieldName ) {\n    ValueMetaInterface valueMeta = new ValueMetaString( fieldName );\n    valueMeta.setOrigin( stepName );\n    // add if doesn't exist\n    int index = -1;\n    if ( !rowMeta.exists( valueMeta ) ) {\n      index = rowMeta.size();","sourceCodeStart":46,"sourceCodeEnd":82,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/file/BaseFileInputStepUtils.java#L46-L82","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before\nbash: kettle transformation reads /data/in.csv owned by root, mode 600 -> not accessible\n// after\nchmod 644 /data/in.csv  # or chown kettle:kettle /data/in.csv","handlingStrategy":"validation","validationCode":"for (String file : files) {\n  java.io.File f = new java.io.File(file);\n  if (f.exists() && !f.canRead()) {\n    throw new IllegalStateException(\"Not accessible: \" + file);\n  }\n}","typeGuard":null,"tryCatchPattern":"try {\n  trans.execute(null);\n} catch (KettleException e) {\n  if (e.getMessage().startsWith(\"Following required files are not accessible\")) {\n    // fix permissions or credentials, then retry\n  } else { throw e; }\n}","preventionTips":["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."],"tags":["file-io","permissions","etl"],"backgroundTag":"permission-denied","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"}