pentaho/pentaho-kettle · error · KettleValueException

: can't be converted to an Internet Address

Error message

 : can't be converted to an Internet Address

What it means

convertData(fromMeta, data) supports converting only from String, Number, BigNumber, and Internet Address source types. Any other source value meta type falls into the default branch and throws KettleValueException 'can't be converted to an Internet Address'.

Solutions

  1. Change the source field type to String/Number/BigNumber before conversion (insert a 'Select values' type-change step)
  2. Convert the source to its String form and let convertStringToInternetAddress handle it
  3. Correct the transformation mapping so Internet Address fields are fed only from compatible types

Example fix

// before
row[ipIdx] = inetMeta.convertData(dateMeta, row[dateIdx]);
// after
row[ipIdx] = inetMeta.convertData(strMeta, strMeta.getString(row[dateIdx])); // or fix mapping
Defensive patterns

Strategy: type-guard

Validate before calling

int t = fromMeta.getType();
boolean convertible = t == ValueMetaInterface.TYPE_STRING || t == ValueMetaInterface.TYPE_NUMBER || t == ValueMetaInterface.TYPE_BIGNUMBER || t == ValueMetaInterface.TYPE_INET;

Type guard

boolean canConvertToInet(ValueMetaInterface m){ int t=m.getType(); return t==ValueMetaInterface.TYPE_STRING||t==ValueMetaInterface.TYPE_NUMBER||t==ValueMetaInterface.TYPE_BIGNUMBER||t==ValueMetaInterface.TYPE_INET; }

Try / catch

try { v = inetMeta.convertData(fromMeta, data); } catch (KettleValueException e) { /* unsupported source type */ }

Prevention

When it happens

Trigger: Calling convertData()/convertDataFromString with a source meta of an unsupported type — e.g., Boolean, Date, Timestamp, or Binary source data being converted into an Internet Address field.

Common situations: Field-type remapping in a transformation where a Date or Boolean field was retargeted as Internet Address; generic conversion utilities that pass arbitrary ValueMeta pairs; Excel input producing Date-typed fields routed to IP columns.

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


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/d097008c380e8581. Report an issue: GitHub.

Appendix: source

Thrown at core/src/main/java/org/pentaho/di/core/row/value/ValueMetaInternetAddress.java:439

   * @return the object in the data type of this value metadata object
   * @throws KettleValueException
   *           in case there is a data conversion error
   */
  @Override
  public Object convertData( ValueMetaInterface meta2, Object data2 ) throws KettleValueException {
    switch ( meta2.getType() ) {
      case TYPE_STRING:
        return convertStringToInternetAddress( meta2.getString( data2 ) );
      case TYPE_INTEGER:
        return convertIntegerToInternetAddress( meta2.getInteger( data2 ) );
      case TYPE_NUMBER:
        return convertNumberToInternetAddress( meta2.getNumber( data2 ) );
      case TYPE_BIGNUMBER:
        return convertBigNumberToInternetAddress( meta2.getBigNumber( data2 ) );
      case TYPE_INET:
        return ( (ValueMetaInternetAddress) meta2 ).getInternetAddress( data2 );
      default:
        throw new KettleValueException( meta2.toStringMeta() + " : can't be converted to an Internet Address" );
    }
  }

  @Override
  public Object cloneValueData( Object object ) throws KettleValueException {
    InetAddress inetAddress = getInternetAddress( object );
    if ( inetAddress == null ) {
      return null;
    }

    try {
      return InetAddress.getByAddress( inetAddress.getAddress() );
    } catch ( Exception e ) {
      throw new KettleValueException( "Unable to clone Internet Address", e );
    }
  }

  @Override

View on GitHub (pinned to f3058517a1)