pentaho/pentaho-kettle · error · InvocationTargetException

AnalyseImpactProgressDialog.RuntimeError.UnableToAnalyzeImpact.Exception

AnalyseImpactProgressDialog.RuntimeError.UnableToAnalyzeImpact.Exception

Error message

AnalyseImpactProgressDialog.RuntimeError.UnableToAnalyzeImpact.Exception

What it means

AnalyseImpactProgressDialog runs transMeta.analyseImpact(...) inside a progress-monitor runnable. Any exception during impact analysis is wrapped in an InvocationTargetException with localized message AnalyseImpactProgressDialog.RuntimeError.UnableToAnalyzeImpact.Exception; the impact list is cleared and impactHasRun set to false.

Solutions

  1. Read e.toString() embedded in the message to identify which step failed impact analysis.
  2. Verify all field and table references in the transformation before running impact analysis.
  3. Disable or fix the offending step and re-run the SQL generation dialog.
  4. Update the step plugin if the vendor fixed impact analysis for your database dialect.

Example fix

// before
// running analyseImpact with a step whose input fields are unresolved
// after
// run transMeta.checkSteps(remarks, ...) first and fix reported errors, then analyseImpact
Defensive patterns

Strategy: try-catch

Validate before calling

List<CheckResultInterface> remarks = new ArrayList<>();
transMeta.checkSteps(remarks, false, null, new Variables(), null, null);
boolean hasErrors = remarks.stream().anyMatch(r -> r.getType() == CheckResultInterface.TYPE_RESULT_ERROR);
// only run analyseImpact when !hasErrors

Try / catch

try {
  new AnalyseImpactProgressDialog(shell, listener, transMeta, impact).open();
} catch (Exception e) {
  // message embeds e.toString() of the underlying analysis failure
  log.error("Impact analysis failed: ", e);
}

Prevention

When it happens

Trigger: Checking 'Analyse impact' in the transformation SQL dialog and transMeta.analyseImpact throws because a step's impact analysis fails: invalid field/table references, unsupported database dialect, or a step plugin throwing during impact computation.

Common situations: Steps referencing non-existent table fields; database dialects without impact-analysis support; third-party step plugins that do not implement analyseImpact correctly.

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

Appendix: source

Thrown at ui/src/main/java/org/pentaho/di/ui/spoon/dialog/AnalyseImpactProgressDialog.java:66

   */
  public AnalyseImpactProgressDialog( Shell shell, TransMeta transMeta, List<DatabaseImpact> impact ) {
    this.shell = shell;
    this.transMeta = transMeta;
    this.impact = impact;
  }

  public boolean open() {
    IRunnableWithProgress op = new IRunnableWithProgress() {
      public void run( IProgressMonitor monitor ) throws InvocationTargetException, InterruptedException {
        try {
          impact.clear(); // Start with a clean slate!!
          transMeta.analyseImpact( impact, new ProgressMonitorAdapter( monitor ) );
          impactHasRun = true;
        } catch ( Exception e ) {
          impact.clear();
          impactHasRun = false;
          // Problem encountered generating impact list: {0}
          throw new InvocationTargetException( e, BaseMessages.getString(
            PKG, "AnalyseImpactProgressDialog.RuntimeError.UnableToAnalyzeImpact.Exception", e.toString() ) );
        }
      }
    };

    try {
      ProgressMonitorDialog pmd = new ProgressMonitorDialog( shell );
      pmd.run( true, true, op );
    } catch ( InvocationTargetException e ) {
      new ErrorDialog( shell,
        BaseMessages.getString( PKG, "AnalyseImpactProgressDialog.Dialog.UnableToAnalyzeImpact.Title" ),
        BaseMessages.getString( PKG, "AnalyseImpactProgressDialog.Dialog.UnableToAnalyzeImpact.Messages" ), e );
    } catch ( InterruptedException e ) {
      new ErrorDialog( shell,
        BaseMessages.getString( PKG, "AnalyseImpactProgressDialog.Dialog.UnableToAnalyzeImpact.Title" ),
        BaseMessages.getString( PKG, "AnalyseImpactProgressDialog.Dialog.UnableToAnalyzeImpact.Messages" ), e );
    }

View on GitHub (pinned to f3058517a1)