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

  1. Verify the LucidDB server is running and accepting connections (check server logs and port)
  2. Check firewall/localhost socket configuration between the Kettle host and LucidDB
  3. Increase retry tolerance or start LucidDB before launching the transformation
  4. 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

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


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)