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
- Define the repository in the Carte server's ~/.kettle/repositories.xml
- Correct the rep request parameter to the exact repository name
- Verify KETTLE_HOME/home directory of the Carte process resolves to the right .kettle dir
- Restart Carte after repository configuration changes
- 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
- Provision repositories.xml on every Carte node identically
- Verify the Carte service account can read its .kettle directory
- Match rep parameters exactly against the XML definitions
- Restart Carte after repository configuration updates
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
- ExecuteJobServlet.Error.UnableToFindRepository
- ExecuteJobServlet.Error.DirectoryPathNotFoundInRepository
- ExecuteJobServlet.Error.JobNotFoundInDirectory
- Repository required.
- TransExecutorDialog.Exception.UnableToFindRepositoryDirector…
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)