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
- Check server logs for search/file service errors on the pentaho repository.
- Recreate the missing shared-objects subfolder or restore from repository recycle bin.
- Verify read permissions for the repository user on all shared object folders.
- 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
- Recreate missing shared subfolders if manually deleted.
- Check repository server search/index logs on failures.
- Grant read permissions to all shared object type folders.
- Retry listing after transient server issues.
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
- AbsSecurityProvider.ERROR_0002_UNABLE_TO_ACCESS_IS_ALLOWED
- AccessInputMeta.Exception.ErrorReadingRepository
- AddSequenceMeta.Exception.UnableToReadStepInfo
- AddSequenceMeta.Exception.UnableToSaveStepInfo
- AggregateRowsMeta.Exception.UnexpectedErrorWhileReadingStepInfo
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)