pentaho/pentaho-kettle · error · KettleException
Unable to load shared objects
Error message
Unable to load shared objects
What it means
PurRepository.readSharedObjects() pulls all shared files, versions, and assembles them; any exception in that multi-step process (after more specific errors like file-type or assembler failures) is wrapped in a KettleException with this message.
Solutions
- Inspect the cause chain (ex.getCause()) for the specific failing service.
- Repair or re-export/re-import the shared objects area in the repository.
- Check that the versioning service is enabled and version summaries exist for shared files.
- Catch KettleException and proceed without shared objects if the transformation can run standalone.
Example fix
// before
Repository rep = new PurRepository(); rep.connect(...); // shared objects loaded implicitly
// after
try {
rep.connect(...);
} catch (KettleException e) {
logError("Shared objects failed to load: " + e.getCause(), e);
} Defensive patterns
Strategy: try-catch
Validate before calling
// ensure versioning enabled and shared area intact before loading // e.g. check repository.getVersioningServicePrinciple() or simply pre-list shared files
Type guard
boolean sharedAreaOk = repository != null && repository.isConnected();
Try / catch
try { loadSharedObjects(); } catch (KettleException e) { Throwable root = e.getCause(); log.error("shared objects failed", root); } Prevention
- Enable and verify the versioning service on the repository server.
- Do not delete version history for shared object files.
- Re-export/import shared objects if they become corrupted.
- Log the full cause chain, not just the wrapper message.
When it happens
Trigger: Calling readSharedObjects()/shared-object load when the file service, versioning service, or data service throws — e.g. missing version summaries, unreadable node data, or serialization failures while importing file content into metadata.
Common situations: Repository shared objects (DB connections, partition schemas, cluster schemas) corrupted or partially deleted; version history pruned on the server while files remain; transient service outages.
Understand the failure class
Background: Database query failed: Internal Server Error 500s wrapping SQL, Prisma, and connection failures — what to check first — this error's family across 16 libraries.
Related errors
- AnalyticQueryMeta.Exception.UnexpectedErrorInReadingStepInfo…
- AnalyticQueryMeta.Exception.UnableToSaveStepInfoToRepository
- DatabaseJoinMeta.Exception.UnableToSaveStepInfo + id_step
- DimensionLookupMeta.Exception.UnexpectedErrorReadingStepInfo…
- ERROR0003.UnableToSaveStepToRepository
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/3902a971bb900732.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepository.java:1436
// (no need to check for next on all iterators)
while ( filesIter.hasNext() ) {
RepositoryFile file = filesIter.next();
NodeRepositoryFileData repoData = dataIter.next();
VersionSummary version = versionsIter.next();
// TODO: inexistent db types can cause exceptions assembling; prevent total failure
try {
sharedObjects.add( assembler.assemble( file, repoData, version ) );
} catch ( Exception ex ) {
// TODO i18n
getLog().logError( "Unable to load shared objects", ex );
}
}
sharedObjectsByType.put( entry.getKey(), sharedObjects );
}
} catch ( Exception ex ) {
// TODO i18n
throw new KettleException( "Unable to load shared objects", ex ); //$NON-NLS-1$
} finally {
readWriteLock.readLock().unlock();
}
}
/**
* Fetch {@link RepositoryFile}s by {@code RepositoryObjectType}.
*
* @param allFiles
* List to add files into.
* @param types
* Types of files to fetch
* @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 {View on GitHub (pinned to f3058517a1)