pentaho/pentaho-kettle · error · KettleException

Unable to get list of repository objects

Error message

Unable to get list of repository objects

What it means

Thrown when building the list of repository object types fails inside a callRead() callback that queries the repository metadata tables. Any exception (SQL error, missing table, connection problem) is wrapped into this KettleException, so the real cause is in the attached exception.

Solutions

  1. Inspect the wrapped cause exception for the actual SQL/database error
  2. Verify all Kettle system tables exist (run repository creation/upgrade SQL if tables are missing)
  3. Check the connecting user has SELECT privileges on the repository tables
  4. Confirm the database is a supported Kettle repository platform/dialect

Example fix

// before: assume repository is complete
rep.connect("admin", "admin");
// after: verify tables exist / repair repository first
// run the repository creation scripts or 'Repair' from Repository Explorer,
// then reconnect
rep.connect("admin", "admin");
Defensive patterns

Strategy: try-catch

Validate before calling

// verify system tables exist
ResultSet rs = md.getTables(null, null, "R_REPOSITORY", null);
if (!rs.next()) { throw new IllegalStateException("Repository tables missing; run repository creation SQL"); }

Try / catch

try {
  String[] objects = repository.getRepositoryObjects();
} catch (KettleException e) {
  log.error("Listing repository objects failed", e.getCause());
  // repair repository / check privileges before retry
}

Prevention

When it happens

Trigger: Calling getRepositoryObjects() on the connection delegate during repository connect/metadata listing; the SELECT over the repository object table throws (missing R_* table, SQL syntax issue on an unsupported DB, broken connection).

Common situations: Connecting to a corrupted or partially created repository (missing system tables); unsupported database dialect producing invalid SQL; repository connection dropped; insufficient privileges to read metadata tables.

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/e557d234979bcc46. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/repository/kdr/delegates/KettleDatabaseRepositoryConnectionDelegate.java:1597

          if ( rs != null ) {
            List<Object[]> rows = database.getRows( rs, -1, null );
            if ( rs != null ) {
              database.closeQuery( rs );
            }
            RowMetaInterface rowMeta = database.getReturnRowMeta();
            for ( Object[] r : rows ) {
              ObjectId id = new LongObjectId( rowMeta.getInteger( r, 4 ) );
              repositoryObjects.add( new RepositoryObject( id, rowMeta.getString( r, 0 ), repositoryDirectory, rowMeta
                .getString( r, 1 ), rowMeta.getDate( r, 2 ), objectType, rowMeta.getString( r, 3 ), false ) );
            }

          }
          return repositoryObjects;
        }
      } );

    } catch ( Exception e ) {
      throw new KettleException( "Unable to get list of repository objects", e );
    }
  }

  public ObjectId[] getIDs( String sql, ObjectId... objectId ) throws KettleException {

    // Get the prepared statement
    //
    PreparedStatement ps = getPreparedStatement( sql );

    // Assemble the parameters (if any)
    //
    RowMetaInterface parameterMeta = new RowMeta();
    Object[] parameterData = new Object[ objectId.length ];
    for ( int i = 0; i < objectId.length; i++ ) {
      parameterMeta.addValueMeta( new ValueMetaInteger( "id" + ( i + 1 ) ) );
      parameterData[ i ] = ( (LongObjectId) objectId[ i ] ).longValue();
    }

View on GitHub (pinned to f3058517a1)