{"record":{"id":"592f1abee99add19","repo":"pentaho/pentaho-kettle","slug":"analyseimpactprogressdialog-runtimeerror","errorCode":"AnalyseImpactProgressDialog.RuntimeError.UnableToAnalyzeImpact.Exception","errorMessage":"AnalyseImpactProgressDialog.RuntimeError.UnableToAnalyzeImpact.Exception","messagePattern":"AnalyseImpactProgressDialog\\.RuntimeError\\.UnableToAnalyzeImpact\\.Exception","errorType":"exception","errorClass":"InvocationTargetException","httpStatus":null,"severity":"error","filePath":"ui/src/main/java/org/pentaho/di/ui/spoon/dialog/AnalyseImpactProgressDialog.java","lineNumber":66,"sourceCode":"   */\n  public AnalyseImpactProgressDialog( Shell shell, TransMeta transMeta, List<DatabaseImpact> impact ) {\n    this.shell = shell;\n    this.transMeta = transMeta;\n    this.impact = impact;\n  }\n\n  public boolean open() {\n    IRunnableWithProgress op = new IRunnableWithProgress() {\n      public void run( IProgressMonitor monitor ) throws InvocationTargetException, InterruptedException {\n        try {\n          impact.clear(); // Start with a clean slate!!\n          transMeta.analyseImpact( impact, new ProgressMonitorAdapter( monitor ) );\n          impactHasRun = true;\n        } catch ( Exception e ) {\n          impact.clear();\n          impactHasRun = false;\n          // Problem encountered generating impact list: {0}\n          throw new InvocationTargetException( e, BaseMessages.getString(\n            PKG, \"AnalyseImpactProgressDialog.RuntimeError.UnableToAnalyzeImpact.Exception\", e.toString() ) );\n        }\n      }\n    };\n\n    try {\n      ProgressMonitorDialog pmd = new ProgressMonitorDialog( shell );\n      pmd.run( true, true, op );\n    } catch ( InvocationTargetException e ) {\n      new ErrorDialog( shell,\n        BaseMessages.getString( PKG, \"AnalyseImpactProgressDialog.Dialog.UnableToAnalyzeImpact.Title\" ),\n        BaseMessages.getString( PKG, \"AnalyseImpactProgressDialog.Dialog.UnableToAnalyzeImpact.Messages\" ), e );\n    } catch ( InterruptedException e ) {\n      new ErrorDialog( shell,\n        BaseMessages.getString( PKG, \"AnalyseImpactProgressDialog.Dialog.UnableToAnalyzeImpact.Title\" ),\n        BaseMessages.getString( PKG, \"AnalyseImpactProgressDialog.Dialog.UnableToAnalyzeImpact.Messages\" ), e );\n    }\n","sourceCodeStart":48,"sourceCodeEnd":84,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/ui/src/main/java/org/pentaho/di/ui/spoon/dialog/AnalyseImpactProgressDialog.java#L48-L84","documentation":"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.","triggerScenarios":"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.","commonSituations":"Steps referencing non-existent table fields; database dialects without impact-analysis support; third-party step plugins that do not implement analyseImpact correctly.","solutions":["Read e.toString() embedded in the message to identify which step failed impact analysis.","Verify all field and table references in the transformation before running impact analysis.","Disable or fix the offending step and re-run the SQL generation dialog.","Update the step plugin if the vendor fixed impact analysis for your database dialect."],"exampleFix":"// before\n// running analyseImpact with a step whose input fields are unresolved\n// after\n// run transMeta.checkSteps(remarks, ...) first and fix reported errors, then analyseImpact","handlingStrategy":"try-catch","validationCode":"List<CheckResultInterface> remarks = new ArrayList<>();\ntransMeta.checkSteps(remarks, false, null, new Variables(), null, null);\nboolean hasErrors = remarks.stream().anyMatch(r -> r.getType() == CheckResultInterface.TYPE_RESULT_ERROR);\n// only run analyseImpact when !hasErrors","typeGuard":null,"tryCatchPattern":"try {\n  new AnalyseImpactProgressDialog(shell, listener, transMeta, impact).open();\n} catch (Exception e) {\n  // message embeds e.toString() of the underlying analysis failure\n  log.error(\"Impact analysis failed: \", e);\n}","preventionTips":["Verify the transformation before running impact analysis.","Avoid unsupported databases/dialects in impact analysis.","Keep step plugins updated."],"tags":["pdi","impact-analysis","progress-dialog","transmeta"],"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"}