{"record":{"id":"1c2e569fbd4468b8","repo":"pentaho/pentaho-kettle","slug":"getdatabaseinfoprogressdialog-error-gettinginfotable","errorCode":null,"errorMessage":"GetDatabaseInfoProgressDialog.Error.GettingInfoTable","messagePattern":"GetDatabaseInfoProgressDialog\\.Error\\.GettingInfoTable","errorType":"exception","errorClass":"InvocationTargetException","httpStatus":null,"severity":"error","filePath":"ui/src/main/java/org/pentaho/di/ui/core/database/dialog/GetDatabaseInfoProgressDialog.java","lineNumber":91,"sourceCode":"  }\n\n  private void notifyDatabaseProgress( IProgressMonitor progressMonitor ) {\n    listeners.forEach( listener -> listener.databaseInfoProgressFinished( progressMonitor ) );\n  }\n\n  @VisibleForTesting\n  protected ProgressMonitorDialog newProgressMonitorDialog() {\n    return new ProgressMonitorDialog( shell );\n  }\n\n  public DatabaseMetaInformation open() {\n    final DatabaseMetaInformation dmi = new DatabaseMetaInformation( dbInfo );\n    IRunnableWithProgress op = new IRunnableWithProgress() {\n      public void run( IProgressMonitor monitor ) throws InvocationTargetException, InterruptedException {\n        try {\n          dmi.getData( Spoon.loggingObject, new ProgressMonitorAdapter( monitor ) );\n        } catch ( Exception e ) {\n          throw new InvocationTargetException( e, BaseMessages.getString(\n            PKG, \"GetDatabaseInfoProgressDialog.Error.GettingInfoTable\", e.toString() ) );\n        }\n      }\n    };\n\n    try {\n      ProgressMonitorDialog pmd = newProgressMonitorDialog();\n      pmd.run( true, true, op );\n      notifyDatabaseProgress( pmd.getProgressMonitor() );\n    } catch ( InvocationTargetException e ) {\n      showErrorDialog( e );\n      return null;\n    } catch ( InterruptedException e ) {\n      showErrorDialog( e );\n      return null;\n    }\n\n    return dmi;","sourceCodeStart":73,"sourceCodeEnd":109,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/ui/src/main/java/org/pentaho/di/ui/core/database/dialog/GetDatabaseInfoProgressDialog.java#L73-L109","documentation":"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().","triggerScenarios":"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.","commonSituations":"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).","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)."],"exampleFix":"// before\nnew GetDatabaseInfoProgressDialog( shell, loggingObject, dbMeta ).open();\n// after\nif ( dbMeta.testConnection( loggingObject ).length == 0 ) {\n  new GetDatabaseInfoProgressDialog( shell, loggingObject, dbMeta ).open();\n} else {\n  MessageBox mb = new MessageBox( shell );\n  mb.setMessage( \"Connection failed; cannot get table info\" );\n  mb.open();\n}","handlingStrategy":"try-catch","validationCode":"// verify connection before collecting metadata\nString[] problems = dbMeta.testConnection( loggingObject );\nboolean ok = ( problems == null || problems.length == 0 );","typeGuard":null,"tryCatchPattern":"try {\n  new GetDatabaseInfoProgressDialog( shell, loggingObject, dbMeta ).open();\n} catch ( InvocationTargetException e ) {\n  Throwable cause = e.getCause();\n  logError( \"Failed to get database table info: \" + cause, cause );\n}","preventionTips":["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."],"tags":["jdbc","database","metadata","progress-dialog"],"backgroundTag":"database-query-failed","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}