pentaho/pentaho-kettle · error · KettleException

FileErrorHandlerMissingFiles.Exception.CouldNotCreateNonAccessibleFile

FileErrorHandlerMissingFiles.Exception.CouldNotCreateNonAccessibleFile

Error message

FileErrorHandlerMissingFiles.Exception.CouldNotCreateNonAccessibleFile

What it means

KettleException thrown by FileErrorHandlerMissingFiles.handleNonAccessibleFile() when logging a file that exists but cannot be accessed (opened/read) to the 'non-accessible files' lineage file fails. Mirrors handleNonExistantFile but records THIS_FILE_WAS_NOT_ACCESSIBLE.

Solutions

  1. Check the chained cause to distinguish lineage-write failure from the original access problem
  2. Fix permissions on both the input file (read access) and the lineage directory (write access)
  3. Check for file locks or security policies (SELinux) blocking access
  4. Point lineage files to a local writable directory and re-run

Example fix

// before: no read permission on input
chmod check: -rw------- data.csv, kettle runs as other user
// after
chmod 644 data.csv; and ensure lineage dir is writable
Defensive patterns

Strategy: validation

Validate before calling

// Pre-check both file access and lineage writability
FileObject inFile = fsManager.resolveFile(inputUri);
if (inFile.exists() && !inFile.isReadable()) {
  log.warn("Input file not accessible: " + inputUri);
}
FileObject lineageDir = fsManager.resolveFile(lineageDirUri);
if (!lineageDir.exists() || !lineageDir.isWriteable()) {
  throw new IllegalStateException("Lineage dir unusable: " + lineageDirUri);
}

Try / catch

try {
  errorHandler.handleNonAccessibleFile(file);
} catch (KettleException e) {
  log.error("Cannot record inaccessible file " + file.getName().getURI()
    + ": " + e.getMessage(), e);
  throw e;
}

Prevention

When it happens

Trigger: handleNonAccessibleFile(file) invoked when an input file can't be opened by the step; then writing the lineage record throws — lineage file creation/write fails (permissions, path invalid, disk full).

Common situations: Input files with OS-level permission problems (process user lacks read access) combined with a lineage directory that's also misconfigured; files locked by another process; SELinux/AppArmor restrictions.

Understand the failure class

Background: "failed to write file", "Could not save figure", "Error saving remote file" — file write failed: causes and fixes across languages and libraries — this error's family across 38 libraries.

Related errors


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

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/step/errorhandling/FileErrorHandlerMissingFiles.java:62

  public void handleNonExistantFile( FileObject file ) throws KettleException {
    handleFile( file );
    try {
      getWriter( NO_PARTS ).write( THIS_FILE_DOES_NOT_EXIST );
      getWriter( NO_PARTS ).write( Const.CR );
    } catch ( Exception e ) {
      throw new KettleException( BaseMessages.getString(
        PKG, "FileErrorHandlerMissingFiles.Exception.CouldNotCreateNonExistantFile" )
        + file.getName().getURI(), e );
    }
  }

  public void handleNonAccessibleFile( FileObject file ) throws KettleException {
    handleFile( file );
    try {
      getWriter( NO_PARTS ).write( THIS_FILE_WAS_NOT_ACCESSIBLE );
      getWriter( NO_PARTS ).write( Const.CR );
    } catch ( Exception e ) {
      throw new KettleException( BaseMessages.getString(
        PKG, "FileErrorHandlerMissingFiles.Exception.CouldNotCreateNonAccessibleFile" )
        + file.getName().getURI(), e );
    }
  }

}

View on GitHub (pinned to f3058517a1)