pentaho/pentaho-kettle · error · KettleException

PurRepository.FailedLogin.Message

PurRepository.FailedLogin.Message

Error message

PurRepository.FailedLogin.Message

What it means

After firing off parallel connection futures (repository service registration, sync, session checks), applyFutureResults checks the repository future first: if it produced a WebServiceException, that is logged and a localized 'failed login' KettleException is thrown with the exception attached. This represents the Pentaho repository web service rejecting the login.

Solutions

  1. Verify username/password and that the account is enabled on the Pentaho server (the underlying WebServiceException is logged — check Spoon logs for the exact HTTP/SSL error)
  2. Confirm the repository URL points to the correct BA server and is reachable (curl the /pentaho endpoint)
  3. Fix TLS/truststore issues if the server uses self-signed certificates
  4. Retry if the server was temporarily down; check server logs (catalina.out / pentaho.log) for the matching request failure
Defensive patterns

Strategy: try-catch

Validate before calling

// pre-flight: verify the BA server repository web service is reachable
HttpURLConnection c = (HttpURLConnection) new URL(baseUrl + "/pentaho/api/repo/files").openConnection();
c.setRequestProperty("Authorization", authHeader);
if (c.getResponseCode() >= 400) throw new KettleException("Server rejected auth: HTTP " + c.getResponseCode());

Try / catch

try {
  repository.connect(repoMeta);
} catch (KettleException e) {
  if (e.getCause() instanceof WebServiceException) {
    log.error("Repository web service rejected login: " + e.getCause().getMessage());
    // check credentials/URL/TLS, then retry
  } else throw e;
}

Prevention

When it happens

Trigger: During PurRepositoryConnector.connect, the repoFuture completes with a non-null WebServiceException — the Pentaho server returned a web-service error during registerRepositoryServices/authentication.

Common situations: Wrong username or password against the Pentaho BA server; server endpoint URL wrong or service unavailable; SSL/certificate errors; server returning 401/403/500 from the repository web service.

Related errors


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

Appendix: source

Thrown at plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepositoryConnector.java:365

    } catch ( Exception e ) {
      if ( log.isError() ) {
        log.logError( BaseMessages.getString( PKG, "PurRepositoryConnector.Error.EnableToGetUser" ), e );
      }
      return null;
    }
  }

  /**
   * Awaits all submitted futures and applies their results to {@code result}.
   */
  private void applyFutureResults( final RepositoryConnectResult result,
      Future<Boolean> authorizationFuture, Future<WebServiceException> repoFuture,
      Future<Exception> syncFuture, Future<String> sessionFuture )
      throws KettleException, InterruptedException, java.util.concurrent.ExecutionException {
    WebServiceException repoException = repoFuture.get();
    if ( repoException != null ) {
      log.logError( repoException.getMessage() );
      throw new KettleException( BaseMessages.getString( PKG, "PurRepository.FailedLogin.Message" ), repoException );
    }

    Exception syncException = syncFuture.get();
    if ( syncException != null ) {
      throw new KettleException( syncException );
    }

    boolean isAdmin = authorizationFuture.get();
    result.getUser().setAdmin( isAdmin );

    String userName = sessionFuture.get();
    if ( userName != null ) {
      result.getUser().setLogin( userName );
    }
  }

  /**
   * Registers all repository services into the service registry after a successful connection.

View on GitHub (pinned to f3058517a1)