pentaho/pentaho-kettle · critical · KettleException
Fatal Error: Remote_rows UDX can't be connected! Please…
Error message
Fatal Error: Remote_rows UDX can't be connected! Please check...
What it means
The LucidDBStreamingLoader connects to LucidDB's REMOTE_ROWS UDX over a local socket; if the client fails to connect after retrying (try_cnt exhausted, connection still null), it throws the fatal 'Remote_rows UDX can't be connected' KettleException.
Solutions
- Verify the LucidDB server is running and accepting connections (check server logs and port)
- Check firewall/localhost socket configuration between the Kettle host and LucidDB
- Increase retry tolerance or start LucidDB before launching the transformation
- Restart LucidDB if it is refusing new UDX connections due to resource exhaustion
Example fix
// before: server down, connect loop exhausts retries
throw new KettleException("Fatal Error: Remote_rows UDX can't be connected! Please check...");
// after: ensure server is started first
$ ./lucidDbServer start # then run the transformation Defensive patterns
Strategy: retry
Validate before calling
// Check LucidDB reachability before starting the loader
Socket s = new Socket();
try {
s.connect(new InetSocketAddress(host, port), 5000);
} finally { s.close(); } Try / catch
try {
loader.initAndConnect();
} catch (KettleException e) {
if (e.getMessage().contains("Remote_rows UDX can't be connected")) {
// wait and retry once after confirming LucidDB is up
Thread.sleep(10000);
loader.initAndConnect();
} else { throw e; }
} Prevention
- Start LucidDB before launching streaming-load transformations
- Monitor LucidDB server health and logs
- Keep firewall rules allowing the local UDX socket
- Add a server-startup step in the job before the transformation
When it happens
Trigger: During initialization the socket client to the LucidDB server-side REMOTE_ROWS UDX cannot be established within the retry loop (each retry waits 5s); after max attempts the step aborts.
Common situations: LucidDB server not running or not listening on the expected port; firewall blocking the local socket; LucidDB restarted mid-transformation; server busy/out of memory refusing new UDX connections; wrong host/port configuration.
Understand the failure class
Background: ECONNREFUSED and "connection refused" / "could not connect to server" errors: what they mean and how to fix them — this error's family across 44 libraries.
Related errors
- A connection of type PALO is expected
- A connection of type PALO is expected
- An unexpected error has occurred
- ConnectionFileSystem.FailedTransformProviderFilename
- Could not execute specified in a repository since we're not…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/5396bd1960714e79.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/lucid-db-streaming-loader/core/src/main/java/org/pentaho/di/trans/steps/luciddbstreamingloader/LucidDBStreamingLoader.java:199
data.objOut = new ObjectOutputStream( data.client.getOutputStream() );
if ( log.isDebug() ) {
logDebug( "Local socket connection is ready" );
}
break;
} catch ( SocketException se ) {
if ( try_cnt < 5 ) {
logBasic( "Local socket connection is not ready, so try to connect in 5 second" );
Thread.sleep( 5000 );
data.client = null;
try_cnt++;
} else {
throw new KettleException( "Fatal Error: Remote_rows UDX can't be connected! Please check..." );
}
} catch ( Exception ex ) {
throw ex;
}
}
// Get combined set of incoming fields, reducing duplicates
ArrayList<String> combined = new ArrayList<String>();
// Add all keys
for ( int i = 0; i < meta.getFieldStreamForKeys().length; i++ ) {
combined.add( meta.getFieldStreamForKeys()[i] );
}
// Add all fields that are NOT already in keys
for ( int i = 0; i < meta.getFieldStreamForFields().length; i++ ) {View on GitHub (pinned to f3058517a1)