{"record":{"id":"6d1a41130150d5e8","repo":"pentaho/pentaho-kettle","slug":"could-not-connect-to-repository","errorCode":null,"errorMessage":"Could not connect to repository: ...","messagePattern":"Could not connect to repository: \\.\\.\\.","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"critical","filePath":"engine/src/main/java/org/pentaho/di/pan/PanCommandExecutor.java","lineNumber":317,"sourceCode":"       *\n       * @link https://github.com/pentaho/pentaho-kettle/blob/8.0.0.0-R/plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepositoryConnector.java#L97-L101\n       * @link https://github.com/pentaho/pentaho-kettle/blob/8.0.0.0-R/plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/WebServiceManager.java#L130-L133\n       */\n      if ( isEnabled( params.getTrustRepoUser() ) ) {\n        System.setProperty( \"pentaho.repository.client.attemptTrust\", \"Y\" );\n      }\n\n      // Load repository metadata\n      RepositoryMeta repositoryMeta = loadRepositoryConnection(\n        params.getRepoName(),\n        \"Pan.Log.LoadingAvailableRep\",\n        \"Pan.Error.NoRepsDefined\",\n        \"Pan.Log.FindingRep\"\n      );\n\n      if ( repositoryMeta == null ) {\n        getLog().logError( BaseMessages.getString( getPkgClazz(), \"Pan.Error.CanNotConnectRep\" ) );\n        throw new KettleException( \"Could not connect to repository: \" + params.getRepoName() );\n      }\n\n      // Establish repository connection\n      this.repository = establishRepositoryConnection(\n        repositoryMeta,\n        params.getRepoUsername(),\n        params.getRepoPassword(),\n        RepositoryOperation.EXECUTE_TRANSFORMATION\n      );\n    } else {\n      // No repository parameters provided, keep repository as null\n      this.repository = null;\n    }\n  }\n\n  public int printVersion() {\n    printVersion( \"Pan.Log.KettleVersion\" );\n    return CommandExecutorCodes.Pan.KETTLE_VERSION_PRINT.getCode();","sourceCodeStart":299,"sourceCodeEnd":335,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/pan/PanCommandExecutor.java#L299-L335","documentation":"PanCommandExecutor.initializeRepository throws KettleException when no RepositoriesMeta matches the repository name supplied with -rep. repositoryMeta == null means the named repository is not defined in repositories.xml, so a connection is impossible. An error is also logged before throwing.","triggerScenarios":"Running pan with -rep:<name> where <name> has no matching RepositoryMeta in repositories.xml (or repositories.xml is missing/empty and no such name exists).","commonSituations":"Misspelled repository name; running pan on a machine where repositories.xml was never created (Spoon never run locally); repository defined in a different KETTLE_HOME user directory.","solutions":["Run `pan -listrep` to see available repository names and use an exact match","Create/fix repositories.xml (connect once in Spoon) with the named repository","Point KETTLE_HOME (or -Dpentaho.repositories.dir) to the directory holding the correct repositories.xml","If no repository is needed, omit -rep and pass -file plus -local instead"],"exampleFix":"// before\npan.sh -rep:ProductionRepo -trans:t.kjb\n// after: verify name first\npan.sh -listrep\npan.sh -rep:production -user:admin -pass:... -trans:t.kjb","handlingStrategy":"validation","validationCode":"RepositoriesMeta reposMeta = new RepositoriesMeta();\nreposMeta.readData();\nboolean found = java.util.Arrays.stream(reposMeta.getRepositoryDialogNames())\n    .anyMatch(n -> n != null && n.equals(repoName));\nif (!found) throw new IllegalStateException(\"Repository '\" + repoName + \"' not in repositories.xml; run pan -listrep\");","typeGuard":"static boolean repositoryExists(RepositoriesMeta meta, String name) {\n  if (name == null) return false;\n  for (int i = 0; i < meta.nrRepositories(); i++) {\n    if (name.equals(meta.getRepository(i).getName())) return true;\n  }\n  return false;\n}","tryCatchPattern":"try {\n  executor.initializeRepository(params);\n} catch (KettleException e) {\n  if (e.getMessage().startsWith(\"Could not connect to repository\")) {\n    throw new ConfigurationException(\"Repository '\" + params.getRepoName() + \"' undefined — run 'pan -listrep' and check KETTLE_HOME\", e);\n  }\n  throw e;\n}","preventionTips":["Run pan -listrep in CI to verify repository names before jobs","Keep repositories.xml under version control / configuration management","Set KETTLE_HOME explicitly in launch scripts","Match repository names exactly (case-sensitive)"],"tags":["repository","configuration","pan"],"backgroundTag":"resource-not-found","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"}