pentaho/pentaho-kettle · error · InvocationTargetException
GetDatabaseInfoProgressDialog.Error.GettingInfoTable
Error message
GetDatabaseInfoProgressDialog.Error.GettingInfoTable
What it means
While the GetDatabaseInfoProgressDialog runs, it calls DatabaseMetaInformation.getData() to collect table/schema metadata from the connected database. Any exception thrown during that retrieval is rethrown as an InvocationTargetException whose message is the localized 'GetDatabaseInfoProgressDialog.Error.GettingInfoTable' text plus the underlying exception's toString().
Solutions
- Read the cause of the InvocationTargetException for the real JDBC error and fix the connection (network, credentials, URL).
- Re-test the connection (DatabaseMeta.testConnection) and verify the database is reachable before opening the dialog.
- Grant the database user permission to read metadata catalogs (e.g. SELECT on system tables).
- Retry after fixing driver/classpath issues (correct JDBC driver jar on the classpath).
Example fix
// before
new GetDatabaseInfoProgressDialog( shell, loggingObject, dbMeta ).open();
// after
if ( dbMeta.testConnection( loggingObject ).length == 0 ) {
new GetDatabaseInfoProgressDialog( shell, loggingObject, dbMeta ).open();
} else {
MessageBox mb = new MessageBox( shell );
mb.setMessage( "Connection failed; cannot get table info" );
mb.open();
} Defensive patterns
Strategy: try-catch
Validate before calling
// verify connection before collecting metadata String[] problems = dbMeta.testConnection( loggingObject ); boolean ok = ( problems == null || problems.length == 0 );
Try / catch
try {
new GetDatabaseInfoProgressDialog( shell, loggingObject, dbMeta ).open();
} catch ( InvocationTargetException e ) {
Throwable cause = e.getCause();
logError( "Failed to get database table info: " + cause, cause );
} Prevention
- Test the database connection before opening metadata dialogs.
- Ensure the DB user has metadata/catalog read privileges.
- Keep the JDBC driver jar current and on the classpath.
When it happens
Trigger: Calling new GetDatabaseInfoProgressDialog(shell, loggingObject, dbMeta).open() when dmi.getData(...) throws — e.g. the connection dropped, the user lacks metadata privileges, or the driver fails while listing tables/columns.
Common situations: Exploring database tables in Spoon after the connection was closed or timed out; connecting with an account lacking SELECT permission on system catalogs; JDBC driver quirks (e.g. Oracle dictionary access denied).
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
- Database.Exception.EmptyConnectionError
- Database.Exception.UnableToGetMetadata
- DatabaseMeta.Error.UnableRetrieveDbInfo
- Error closing connection while searching primary keys in…
- Error evaluating Internet address value metadata
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/1c2e569fbd4468b8.
Report an issue: GitHub.
Appendix: source
Thrown at ui/src/main/java/org/pentaho/di/ui/core/database/dialog/GetDatabaseInfoProgressDialog.java:91
}
private void notifyDatabaseProgress( IProgressMonitor progressMonitor ) {
listeners.forEach( listener -> listener.databaseInfoProgressFinished( progressMonitor ) );
}
@VisibleForTesting
protected ProgressMonitorDialog newProgressMonitorDialog() {
return new ProgressMonitorDialog( shell );
}
public DatabaseMetaInformation open() {
final DatabaseMetaInformation dmi = new DatabaseMetaInformation( dbInfo );
IRunnableWithProgress op = new IRunnableWithProgress() {
public void run( IProgressMonitor monitor ) throws InvocationTargetException, InterruptedException {
try {
dmi.getData( Spoon.loggingObject, new ProgressMonitorAdapter( monitor ) );
} catch ( Exception e ) {
throw new InvocationTargetException( e, BaseMessages.getString(
PKG, "GetDatabaseInfoProgressDialog.Error.GettingInfoTable", e.toString() ) );
}
}
};
try {
ProgressMonitorDialog pmd = newProgressMonitorDialog();
pmd.run( true, true, op );
notifyDatabaseProgress( pmd.getProgressMonitor() );
} catch ( InvocationTargetException e ) {
showErrorDialog( e );
return null;
} catch ( InterruptedException e ) {
showErrorDialog( e );
return null;
}
return dmi;View on GitHub (pinned to f3058517a1)