pentaho/pentaho-kettle · error · KettleException

AccessInput.Log.RequiredNotAccessibleFilesMissing

AccessInput.Log.RequiredNotAccessibleFilesMissing

Error message

AccessInput.Log.RequiredNotAccessibleFilesMissing

What it means

KettleException thrown by AccessInput.handleMissingFiles during step init when the listed files exist but cannot be opened/accessed by the process. It logs the non-accessible file list and throws, aborting the transformation.

Solutions

  1. Grant the PDI process user read permission on the file and its containing directory.
  2. Check for exclusive locks: close MS Access sessions and delete stale .ldb lock files on the share.
  3. Test access as the actual run-time user (e.g. su to the service account and cat the file) to reproduce the permission issue.
  4. If the file is on a network share, verify share-level and NTFS/POSIX ACLs both allow the run-time user.

Example fix

// on the execution host, grant read access to the PDI user
chmod o+r /data/customers.mdb && chmod o+rx /data
// or on Windows share: grant the service account Read on both share and NTFS ACL
Defensive patterns

Strategy: validation

Validate before calling

// pre-check readability of each resolved file as the run-time user
for ( File f : resolvedFiles ) {
  if ( f.exists() && !f.canRead() ) {
    throw new AccessDeniedException( f.getPath() );
  }
}

Try / catch

try { trans.execute( null ); } catch ( KettleException e ) { if ( e.getMessage().contains( "access" ) || e.getMessage().contains( "access" ) ) { logError( "Check file permissions/locks: " + e.getMessage() ); } }

Prevention

When it happens

Trigger: init() -> handleMissingFiles() finding data.files.getNonAccessibleFiles() non-empty: file exists but the PDI user lacks read permission, the file is exclusively locked by MS Access/another process, or the VFS layer fails to open it (locked network share, permissions on the parent directory).

Common situations: Running the transformation under a service account without permissions on the share; .mdb opened in exclusive mode by another user; Access database with a stale .ldb lock file; SELinux/filesystem ACLs on Linux deployments.

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


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/43618b227c8fcfed. Report an issue: GitHub.

Appendix: source

Thrown at plugins/ms-access/impl/src/main/java/org/pentaho/di/trans/steps/accessinput/AccessInput.java:376

  }

  private void handleMissingFiles() throws KettleException {
    List<FileObject> nonExistantFiles = data.files.getNonExistantFiles();
    if ( nonExistantFiles.size() != 0 ) {
      String message = FileInputList.getRequiredFilesDescription( nonExistantFiles );
      logError( BaseMessages.getString( PKG, "AccessInput.Log.RequiredFilesTitle" ), BaseMessages.getString(
        PKG, "AccessInput.Log.RequiredFiles", message ) );

      throw new KettleException( BaseMessages.getString( PKG, "AccessInput.Log.RequiredFilesMissing", message ) );
    }

    List<FileObject> nonAccessibleFiles = data.files.getNonAccessibleFiles();
    if ( nonAccessibleFiles.size() != 0 ) {
      String message = FileInputList.getRequiredFilesDescription( nonAccessibleFiles );
      logError( BaseMessages.getString( PKG, "AccessInput.Log.RequiredFilesTitle" ), BaseMessages.getString(
        PKG, "AccessInput.Log.RequiredNotAccessibleFiles", message ) );

      throw new KettleException( BaseMessages.getString(
        PKG, "AccessInput.Log.RequiredNotAccessibleFilesMissing", message ) );
    }
  }

  /**
   * Build an empty row based on the meta-data...
   *
   * @return
   */

  private Object[] buildEmptyRow() {
    Object[] rowData = RowDataUtil.allocateRowData( data.outputRowMeta.size() );

    return rowData;
  }

  public boolean init( StepMetaInterface smi, StepDataInterface sdi ) {
    meta = (AccessInputMeta) smi;

View on GitHub (pinned to f3058517a1)