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

  1. Inspect the cause chain (ex.getCause()) for the specific failing service.
  2. Repair or re-export/re-import the shared objects area in the repository.
  3. Check that the versioning service is enabled and version summaries exist for shared files.
  4. 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

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


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)