pentaho/pentaho-kettle · error · KettleValueException
: I don't know how to convert a serializable value to…
Error message
: I don't know how to convert a serializable value to Internet address.
What it means
Values declared TYPE_SERIALIZABLE hold arbitrary Java Serializable objects, and getInternetAddress() cannot know how to turn one into an InetAddress, so it throws this KettleValueException explicitly. Only string/number/integer/bignumber/InetAddress-typed data are convertible.
Solutions
- Correct the downstream value meta type; it should be TYPE_INET, not TYPE_SERIALIZABLE
- Extract the address into a String field upstream before the Internet Address metadata expects it
- Check stream alignment (getFields()/row metadata) to prevent serializable columns from being typed as addresses
- If the serializable object wraps an InetAddress, unwrap it upstream and store as TYPE_INET
Example fix
// before
InetAddress addr = meta.getInternetAddress(serializableObject); // throws
// after
if (serializableObject instanceof InetAddress) {
InetAddress addr = (InetAddress) serializableObject;
} else {
throw new KettleException("Field is not an InetAddress: " + serializableObject.getClass());
} Defensive patterns
Strategy: type-guard
Validate before calling
if (meta.getType() == ValueMetaInterface.TYPE_SERIALIZABLE) {
throw new KettleException("Field " + meta.getName() + " holds a serializable object; convert to String/INET first");
} Type guard
if (object instanceof InetAddress) { InetAddress addr = (InetAddress) object; } Try / catch
try {
InetAddress addr = meta.getInternetAddress(object);
} catch (KettleValueException e) {
if (e.getMessage().contains("serializable value to Internet address")) { /* unwrap or retype upstream */ }
throw e;
} Prevention
- Avoid passing Serializable columns through type-converting steps
- Unwrap address objects upstream into TYPE_INET fields
- Validate merged-stream metadata field by field
- Prefer explicit string representations over serializable pass-through
When it happens
Trigger: getInternetAddress(), getString(), inetAddress(), or getNativeDataType() invoked on a ValueMetaInternetAddress whose type is TYPE_SERIALIZABLE, commonly when passing through serializable pass-through fields (e.g. Kettle 'Serializable' columns) into an address-typed metadata.
Common situations: Row fields carrying user-defined objects through transforms where downstream metadata was wrongly declared as Internet Address; merging streams where one side has a serializable object column aligned by position with an address column.
Understand the failure class
Background: "is not a compatible type" / "cannot merge" errors: when a value's type doesn't match what the library requires — this error's family across 65 libraries.
Related errors
- : I don't know how to convert a serializable value to…
- : I don't know how to convert serializable values to…
- Error converting data while looking up value
- : I don't know how to convert a binary value to Internet…
- : I don't know how to convert a binary value to timestamp.
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/355a252c81e728ae.
Report an issue: GitHub.
Appendix: source
Thrown at core/src/main/java/org/pentaho/di/core/row/value/ValueMetaInternetAddress.java:139
case TYPE_BIGNUMBER:
switch ( storageType ) {
case STORAGE_TYPE_NORMAL:
return convertBigNumberToInternetAddress( (BigDecimal) object );
case STORAGE_TYPE_BINARY_STRING:
return convertBigNumberToInternetAddress( (BigDecimal) convertBinaryStringToNativeType( (byte[]) object ) );
case STORAGE_TYPE_INDEXED:
return convertBigNumberToInternetAddress( (BigDecimal) index[( (Integer) object ).intValue()] );
default:
throw new KettleValueException( toString() + " : Unknown storage type " + storageType + " specified." );
}
case TYPE_BOOLEAN:
throw new KettleValueException( toString()
+ " : I don't know how to convert a boolean to a Internet address." );
case TYPE_BINARY:
throw new KettleValueException( toString()
+ " : I don't know how to convert a binary value to Internet address." );
case TYPE_SERIALIZABLE:
throw new KettleValueException( toString()
+ " : I don't know how to convert a serializable value to Internet address." );
default:
throw new KettleValueException( toString() + " : Unknown type " + type + " specified." );
}
}
@Override
public Date getDate( Object object ) throws KettleValueException {
throw new KettleValueException( toStringMeta()
+ ": it's not possible to convert from Internet Address to a date" );
}
@Override
public Long getInteger( Object object ) throws KettleValueException {
InetAddress address = getInternetAddress( object );
if ( address == null ) {
return null;View on GitHub (pinned to f3058517a1)