pentaho/pentaho-kettle · error · KettleException

Unable to find repository: " + repositoryName

Error message

Unable to find repository: " + repositoryName

What it means

KettleException thrown by ExecuteTransServlet.openRepository when findRepository(repositoryName) returns null — the repository named in the request is not defined in the server's repositories.xml. Mirror of the ExecuteJobServlet check but with an inline, non-localized message.

Solutions

  1. Define the repository in the Carte server's ~/.kettle/repositories.xml
  2. Correct the rep request parameter to the exact repository name
  3. Verify KETTLE_HOME/home directory of the Carte process resolves to the right .kettle dir
  4. Restart Carte after repository configuration changes
  5. Audit all cluster nodes for consistent repositories.xml content

Example fix

// before
String repParam = "slave_repo"; // undefined on this Carte node
// after
// repositories.xml: <repository><name>slave_repo</name>...</repository>
String repParam = "slave_repo"; // now resolvable
Defensive patterns

Strategy: validation

Validate before calling

RepositoriesMeta meta = new RepositoriesMeta();
meta.readData();
if ( meta.findRepository( rep ) == null ) {
  throw new IllegalStateException( "Repository not found on server: " + rep );
}

Try / catch

try {
  // executeTrans request
} catch ( KettleException e ) {
  if ( e.getMessage().startsWith( "Unable to find repository" ) ) {
    LOG.error( "Define repository '" + rep + "' in server's ~/.kettle/repositories.xml", e );
  }
}

Prevention

When it happens

Trigger: GET /kettle/executeTrans/ with a rep parameter not matching any RepositoryMeta loaded by RepositoriesMeta.readData() from ~/.kettle/repositories.xml.

Common situations: repositories.xml absent or unreadable on the Carte host; repository renamed; typo in rep; Carte running under a service account whose home lacks .kettle/repositories.xml; cluster nodes configured inconsistently.

Understand the failure class

Background: "Config file not found": what it means and how to fix it in docker-sync, Maven, Vagrant, Turborepo and other tools — this error's family across 60 libraries.

Related errors


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

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/www/ExecuteTransServlet.java:408

        throw new KettleException( "Unable to find transformation '" + name + "' in directory :" + directory );
      }
      // TODO BACKLOG-44138 need to pass parent variablespace
      TransMeta transMeta = repository.loadTransformation( transformationID, null, parentVariableSpace );
      return transMeta;
    }
  }

  private Repository openRepository( String repositoryName, String user, String pass ) throws KettleException {

    if ( Utils.isEmpty( repositoryName ) ) {
      return null;
    }

    RepositoriesMeta repositoriesMeta = new RepositoriesMeta();
    repositoriesMeta.readData();
    RepositoryMeta repositoryMeta = repositoriesMeta.findRepository( repositoryName );
    if ( repositoryMeta == null ) {
      throw new KettleException( "Unable to find repository: " + repositoryName );
    }
    PluginRegistry registry = PluginRegistry.getInstance();
    Repository repository = registry.loadClass( RepositoryPluginType.class, repositoryMeta, Repository.class );
    repository.init( repositoryMeta );
    repository.connect( user, pass );
    return repository;
  }

  public String toString() {
    return "Start transformation";
  }

  public String getService() {
    return CONTEXT_PATH + " (" + toString() + ")";
  }

  protected void executeTrans( Trans trans ) throws KettleException {
    trans.prepareExecution( null );

View on GitHub (pinned to f3058517a1)