pentaho/pentaho-kettle · error · KettleException

Unable to get all files of type

Error message

Unable to get all files of type [%s]

What it means

Repository access failure in PurRepository.getFilesByType: an error occurred while collecting/reading all files of the requested types from the Pentaho repository. The formatted message includes the object types and wraps the underlying server/client exception.

Solutions

  1. Check server logs for search/file service errors on the pentaho repository.
  2. Recreate the missing shared-objects subfolder or restore from repository recycle bin.
  3. Verify read permissions for the repository user on all shared object folders.
  4. Upgrade/patch the pur plugin if the search API misbehaves for certain types.

Example fix

// before
Map<RepositoryObjectType, List<RepositoryFile>> byType = getFilesByType(SHARED_TYPES);
// after
try {
  Map<RepositoryObjectType, List<RepositoryFile>> byType = getFilesByType(SHARED_TYPES);
} catch (KettleException e) {
  logError("File listing failed: " + e.getMessage(), e);
}
Defensive patterns

Strategy: try-catch

Validate before calling

// check directory exists before listing files of type
// e.g. repository.exists(sharedFolder) == true

Type guard

boolean canRead = repository != null && repository.isConnected();

Try / catch

try { filesByType = getFilesByType(types); } catch (KettleException e) { log.error("listing failed for " + e.getMessage(), e); }

Prevention

When it happens

Trigger: Calling getFilesByType / shared-object loading when getAllFilesOfType() fails for one type — e.g. repository search service error, deleted root folder, or permission failure scoped to that type's folder.

Common situations: Pentaho server search/index issues; the shared folder for one object type (e.g. slaveservers) removed while others remain.

Understand the failure class

Background: "failed to read file", EACCES, ENOENT and "could not read <path>" errors: when a program can't read a file from disk — this error's family across 49 libraries.

Related errors


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

Appendix: source

Thrown at plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepository.java:1467

   * @return Ordered map of object types to list of files.
   * @throws KettleException
   */
  private LinkedHashMap<RepositoryObjectType, List<RepositoryFile>> getFilesByType( List<RepositoryFile> allFiles,
                                                                                    RepositoryObjectType... types )
    throws KettleException {
    // Must be ordered or we can't match up files with data and version summary
    LinkedHashMap<RepositoryObjectType, List<RepositoryFile>>
      filesByType =
      new LinkedHashMap<RepositoryObjectType, List<RepositoryFile>>();
    // Since type is not preserved in the RepositoryFile we must fetch files by type
    for ( RepositoryObjectType type : types ) {
      try {
        List<RepositoryFile> files = getAllFilesOfType( null, type, false );
        filesByType.put( type, files );
        allFiles.addAll( files );
      } catch ( Exception ex ) {
        // TODO i18n
        throw new KettleException( String.format( "Unable to get all files of type [%s]", type ), ex ); //$NON-NLS-1$
      }
    }
    return filesByType;
  }

  @Override
  public List<DatabaseMeta> readDatabases() throws KettleException {
    readWriteLock.readLock().lock();
    try {
      boolean hasOsgiFolder = new File( SYSTEM_FOLDER ).exists();
      List<RepositoryFile> children = getAllFilesOfType( null, RepositoryObjectType.DATABASE, false );
      List<DatabaseMeta> dbMetas = new ArrayList<>();

      //[PDI-18487] - Amount of POST calls from PDI client connected to Repository
      //Grab data from all objects at once to lower calls to server
      List<NodeRepositoryFileData> data = pur.getDataForReadInBatch( children, NodeRepositoryFileData.class );
      Iterator<NodeRepositoryFileData> dataIter = data.iterator();

View on GitHub (pinned to f3058517a1)