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
- 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)
- Confirm the repository URL points to the correct BA server and is reachable (curl the /pentaho endpoint)
- Fix TLS/truststore issues if the server uses self-signed certificates
- 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
- Verify credentials and server URL before connecting
- Check Spoon/server logs for the logged WebServiceException detail
- Confirm network/TLS reachability of the Pentaho BA server
- Retry transient failures with backoff
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
- AbsSecurityManager.ERROR_0003_UNABLE_TO_ACCESS_ROLE_BINDING_WEBSVC
- AbsSecurityManager.ERROR_0005_INSUFFICIENT_PRIVELEGES
- Browser session authentication requested but no JSESSIONID…
- ERROR_0002_UNABLE_TO_GET_LOGICAL_ROLES
- ERROR_0012_UNABLE_TO_UPDATE_ROLE
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)