pentaho/pentaho-kettle · error · RuntimeException
Unexpected error encountered, probably encoding/decoding…
Error message
Unexpected error encountered, probably encoding/decoding base64 data
What it means
Thrown by RemoteStep.getXML during serialization when RowMeta.getMetaXML() throws an IOException while base64-encoding the row metadata for the XML representation. This indicates an internal failure in the base64 encode/decode machinery, not a user problem.
Solutions
- Inspect the wrapped IOException cause for the actual encoding failure.
- Verify the JVM's default charset and available charsets are intact (Charset.availableCharsets()).
- Retry serialization in a clean JVM; if reproducible, report as a Kettle bug with the cause stack.
- As a workaround, null out or rebuild the rowMeta before calling getXML().
Defensive patterns
Strategy: try-catch
Try / catch
try { String xml = remoteStep.getXML(); } catch (RuntimeException e) { if (e.getMessage().contains("encoding/decoding base64")) { log.error("Base64 serialization failed", e.getCause()); } else { throw e; } } Prevention
- Keep rowMeta well-formed and rebuilt from a valid RowMetaInterface
- Do not patch/replace JVM charset providers
- Report reproducible cases to the Kettle project with the cause stack
When it happens
Trigger: Calling getXML() on a RemoteStep whose rowMeta is non-null and whose internal serialization to base64 fails with an IOException from the underlying encoder.
Common situations: Rare environment-level issues such as corrupted JVM charset providers or a broken/patched encoder; practically an internal-invariant situation during clustering serialization.
Understand the failure class
Background: json.Marshal / "failed to marshal" errors in Go: why "unsupported type" happens and how to fix it — this error's family across 22 libraries.
Related errors
- AddSequenceMeta.Exception.ErrorLoadingStepInfo
- AnalyticQueryMeta.Exception.UnableToLoadStepInfoFromXML
- ChangeFileEncodingMeta.Exception.UnableToReadStepInfo
- CombinationLookupMeta.Exception.UnableToLoadStepInfo
- Error loading transformation step from XML
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/c233410cf8d4d6a4.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/step/RemoteStep.java:188
xml.append( XMLHandler.addTagValue( "hostname", hostname, false ) );
xml.append( XMLHandler.addTagValue( "remote_hostname", remoteHostname, false ) );
xml.append( XMLHandler.addTagValue( "port", port, false ) );
xml.append( XMLHandler.addTagValue( "buffer_size", bufferSize, false ) );
xml.append( XMLHandler.addTagValue( "compressed_streams", compressingStreams, false ) );
xml.append( XMLHandler.addTagValue( "source_step_name", sourceStep, false ) );
xml.append( XMLHandler.addTagValue( "source_step_copy", sourceStepCopyNr, false ) );
xml.append( XMLHandler.addTagValue( "target_step_name", targetStep, false ) );
xml.append( XMLHandler.addTagValue( "target_step_copy", targetStepCopyNr, false ) );
xml.append( XMLHandler.addTagValue( "source_slave_server_name", sourceSlaveServerName, false ) );
xml.append( XMLHandler.addTagValue( "target_slave_server_name", targetSlaveServerName, false ) );
if ( rowMeta != null ) {
try {
xml.append( rowMeta.getMetaXML() );
} catch ( IOException e ) {
throw new RuntimeException( "Unexpected error encountered, probably encoding/decoding base64 data", e );
}
}
xml.append( XMLHandler.addTagValue( "encrypted_streams", encryptingStreams, false ) );
try {
xml.append( XMLHandler.addTagValue( "key", key ) );
} catch ( Exception ex ) {
baseStep.logError( "Unable to parse key", ex );
}
xml.append( XMLHandler.closeTag( XML_TAG ) );
return xml.toString();
}
public RemoteStep( Node node ) throws KettleException {
hostname = XMLHandler.getTagValue( node, "hostname" );
remoteHostname = XMLHandler.getTagValue( node, "remote_hostname" );
port = XMLHandler.getTagValue( node, "port" );
bufferSize = Integer.parseInt( XMLHandler.getTagValue( node, "buffer_size" ) );View on GitHub (pinned to f3058517a1)