pentaho/pentaho-kettle · error · KettleStepException
WebServices.ERROR0013.UnknownHost
WebServices.ERROR0013.UnknownHost
Error message
WebServices.ERROR0013.UnknownHost
What it means
Thrown by WebService.requestSOAP() when java.net.UnknownHostException is raised while resolving the SOAP endpoint's hostname — i.e., DNS lookup failed. The step wraps it in a KettleStepException with message key WebServices.ERROR0013.UnknownHost including the service URL. This is a DNS/network reachability problem, not a step configuration parse issue.
Solutions
- Verify the hostname resolves: nslookup/ping the host from the machine running Pentaho
- Correct the URL in the step dialog (typos, wrong internal vs external hostname)
- Fix DNS/VPN/network configuration or add a hosts-file entry for the environment
- Use an IP or a resolvable FQDN if short names are not configured in search domains
Example fix
// before // URL: http://internalws:8080/service (UnknownHostException on VM) // after // URL: http://internalws.corp.example.com:8080/service // or add '10.0.0.42 internalws' to /etc/hosts on the Pentaho server.
Defensive patterns
Strategy: retry
Validate before calling
// pre-flight DNS check before running the transformation
InetAddress addr = InetAddress.getByName( host );
// throws UnknownHostException early with a clearer message
if ( addr == null ) {
throw new IllegalStateException( "Host not resolvable: " + host );
} Try / catch
try {
trans.execute( null );
} catch ( KettleStepException e ) {
if ( e.getMessage() != null && e.getMessage().contains( "ERROR0013" ) ) {
logError( "Cannot resolve SOAP host " + serviceUrl + ": check DNS/VPN/hosts file" );
// optionally retry after network remediation
}
} Prevention
- Use fully-qualified hostnames rather than short names
- Verify DNS resolution from the Pentaho server itself (nslookup) before scheduling
- Keep VPN/DNS configuration valid on all execution nodes
- Add hosts-file entries as a documented fallback for critical services
When it happens
Trigger: requestSOAP() POSTs to cachedURLService whose host cannot be resolved by the JVM's DNS resolver, throwing UnknownHostException caught by the dedicated catch clause.
Common situations: Hostname typo in the step URL, running on a machine/cluster without access to the internal DNS zone, VPN not connected, Docker/K8s container lacking DNS config, or hostname removed from DNS after a server migration.
Related errors
- HTTP.Error.UnknownHostException
- HTTPPOST.Error.UnknownHostException
- MailValidator.NoMatchName
- An error occurred sending a slave transformation:
- An error occurred sending the master transformation:
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/62877a82282c52bb.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/webservices/WebService.java:399
httpEntity = httpResponse.getEntity();
ContentType contentType = ContentType.getOrDefault( httpEntity );
charSet = contentType.getCharset();
processRows( httpEntity.getContent(), rowData, rowMeta, cachedWsdl.getWsdlTypes()
.isElementFormQualified( cachedWsdl.getTargetNamespace() ), charSet.toString() );
} else if ( responseCode == HttpStatus.SC_UNAUTHORIZED ) {
throw new KettleStepException( BaseMessages.getString( PKG, "WebServices.ERROR0011.Authentication",
cachedURLService ) );
} else if ( responseCode == HttpStatus.SC_NOT_FOUND ) {
throw new KettleStepException( BaseMessages.getString( PKG,
"WebServices.ERROR0012.NotFound", cachedURLService ) );
} else {
throw new KettleStepException( BaseMessages.getString( PKG,
"WebServices.ERROR0001.ServerError", Integer.toString( responseCode ),
Const.NVL( new String( EntityUtils.toString( httpEntity, charSet.toString() ) ), "" ), cachedURLService ) );
}
// requestTime += Const.nanoTime() - currentRequestTime;
} catch ( UnknownHostException e ) {
throw new KettleStepException( BaseMessages
.getString( PKG, "WebServices.ERROR0013.UnknownHost", cachedURLService ), e );
} catch ( IOException e ) {
throw new KettleStepException( BaseMessages
.getString( PKG, "WebServices.ERROR0005.IOException", cachedURLService ), e );
} catch ( URISyntaxException e ) {
throw new KettleStepException( BaseMessages.getString( PKG, "WebServices.ERROR0002.InvalidURI",
cachedURLService ), e );
} finally {
data.argumentRows.clear(); // ready for the next batch.
if ( vHttpMethod != null ) {
vHttpMethod.releaseConnection();
}
}
}
private void initWsdlEnv() throws KettleException {
if ( meta.equals( cachedMeta ) ) {
return;View on GitHub (pinned to f3058517a1)