pentaho/pentaho-kettle · error · InvocationTargetException

RepositoryExportDialog.Error.CreateUpdate

Error message

RepositoryExportDialog.Error.CreateUpdate

What it means

In RepositoryExportProgressDialog's run() (the cancellable IRunnableWithProgress body), any KettleException thrown while exporting repository objects is wrapped in an InvocationTargetException with the localized message 'RepositoryExportDialog.Error.CreateUpdate' plus a stack tracker. It signals the repository export operation itself failed.

Solutions

  1. Inspect the embedded KettleException stack tracker (shown in the ErrorDialog) for the root cause
  2. Verify repository connectivity and retry the export
  3. Export a smaller scope (single directory/objects) to isolate the failing object
  4. Check the destination filename/directory is valid and writable
Defensive patterns

Strategy: try-catch

Validate before calling

// pre-check repository connectivity before opening the export dialog
if (!rep.isConnected()) { showError("Repository not connected"); return; }

Try / catch

try { runExportProgressDialog(...); } catch (InvocationTargetException ite) { Throwable root = ite; while (root.getCause() != null) root = root.getCause(); log.error("Export failed: " + root.getMessage(), root); showError(BaseMessages.getString(PKG, "RepositoryExportDialog.Error.CreateUpdate")); }

Prevention

When it happens

Trigger: exporter.exportAllObjects / exportAllObjectsWithFeedback throwing KettleException during the export progress dialog — repository connection dropped mid-export, unreadable repository object, database error while reading objects, or invalid export filename.

Common situations: Network interruption to the repository database during a long export; repository object with corrupt metadata; exporting a directory the user lacks permission to read; target filename invalid causing the exporter to fail.

Understand the failure class

Background: "API request failed": what wrapped HTTP errors from external APIs mean and how to find the real cause — this error's family across 29 libraries.

Related errors


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/0f53807d229e7efa. Report an issue: GitHub.

Appendix: source

Thrown at ui/src/main/java/org/pentaho/di/ui/repository/dialog/RepositoryExportProgressDialog.java:111

    // this hack is only to support dog-nail build process for <...>
    // and keep base interfaces without changes - getExporter should 
    // directly return IRepositoryExporterFeedback.
    final boolean isFeedback = ( exporter instanceof IRepositoryExporterFeedback ) ? true : false;
    IRunnableWithProgress op = new IRunnableWithProgress() {
      public void run( IProgressMonitor monitor ) throws InvocationTargetException, InterruptedException {
        try {
          exporter.setImportRulesToValidate( importRules );
          ProgressMonitorAdapter pMonitor = new ProgressMonitorAdapter( monitor );
          if ( isFeedback ) {
            IRepositoryExporterFeedback fExporter = IRepositoryExporterFeedback.class.cast( exporter );
            List<ExportFeedback> ret =
                fExporter.exportAllObjectsWithFeedback( pMonitor, filename, dir, "all" );
            list.addAll( ret );
          } else {
            exporter.exportAllObjects( pMonitor, filename, dir, "all" );
          }
        } catch ( KettleException e ) {
          throw new InvocationTargetException( e, BaseMessages.getString( PKG,
              "RepositoryExportDialog.Error.CreateUpdate", Const.getStackTracker( e ) ) );
        }
      }
    };

    try {
      ProgressMonitorDialog pmd = new ProgressMonitorDialog( shell );
      pmd.run( true, true, op );

      if ( !pmd.getProgressMonitor().isCanceled() && isFeedback ) {
        // show some results here.
        IRepositoryExporterFeedback fExporter = IRepositoryExporterFeedback.class.cast( exporter );
        showExportResultStatus( list, fExporter.isRulesViolation() );
      }
    } catch ( InvocationTargetException e ) {
      log.logError( RepositoryExportProgressDialog.class.toString(), "Error creating repository: " + e.toString() );
      log.logError( Const.getStackTracker( e ) );
      new ErrorDialog( shell, BaseMessages.getString( PKG, "RepositoryExportDialog.ErrorExport.Title" ), BaseMessages

View on GitHub (pinned to f3058517a1)