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
- Inspect the wrapped cause exception for the actual SQL/database error
- Verify all Kettle system tables exist (run repository creation/upgrade SQL if tables are missing)
- Check the connecting user has SELECT privileges on the repository tables
- 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
- Run repository creation/upgrade scripts completely after installs
- Grant the repository user SELECT on all R_* tables
- Use only supported database platforms for repositories
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
- ElasticSearchBulkMeta.Exception.ErrorReadingRepository
- ElasticSearchBulkMeta.Exception.ErrorSavingToRepository
- FileExistsMeta.Exception.UnableToSaveStepInfo
- FileExistsMeta.Exception.UnexpectedErrorReadingStepInfo
- GetPreviousRowFieldMeta.Exception.UnexpectedErrorInReadingSt…
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)