pentaho/pentaho-kettle · error · IOException

Unable to convert String to BigNumber while reading from…

Error message

Unable to convert String to BigNumber while reading from data input stream [

What it means

resolveIP performs a DNS reverse lookup and requires exactly 2 arguments (the IP address and a timeout/conversion flag per the Kettle function contract). When ArgList.length != 2 the function throws this Rhino runtime error; the lookup itself never throws - failures inside the try block just yield '-'.

Solutions

  1. Call with both arguments, e.g. resolveIP(ip, true) per your Kettle version's signature.
  2. Check your Kettle/PDI version's documentation for resolveIP's exact parameter list, since it changed across versions.
  3. Handle the '-' return value which signals lookup failure, distinct from this argument-count error.

Example fix

// before
var host = resolveIP(ipField);
// after
var host = resolveIP(ipField, true);
Defensive patterns

Strategy: validation

Validate before calling

if (arguments.length !== 2) throw new Error("resolveIP requires 2 arguments");
if (ip == null || ip == "") return "-";

Type guard

null

Try / catch

var host;
try {
  host = resolveIP(ip, true);
} catch (e) {
  host = "-"; // mirror the function's own failure sentinel
}

Prevention

When it happens

Trigger: Calling resolveIP(ip) with one argument, or resolveIP() with none, or with 3+ arguments from JavaScript in the Script Values step.

Common situations: Omitting the second (boolean/timeout) argument assuming it is optional; passing a hostname string plus extra options; refactored calls that dropped an argument.

Understand the failure class

Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.

Related errors


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

Appendix: source

Thrown at core/src/main/java/org/pentaho/di/compatibility/Value.java:1601

            dis.readFully( chars );
            setValue( new String( chars, Const.XML_ENCODING ) );
          }
          break;
        case VALUE_TYPE_BIGNUMBER:
          // read the length
          int bnLength = dis.readInt();
          if ( bnLength < 0 ) {
            setValue( (BigDecimal) null );
          } else {
            StringBuilder buffer = new StringBuilder();
            for ( int i = 0; i < bnLength; i++ ) {
              buffer.append( dis.readChar() );
            }
            setValue( buffer.toString() );
            try {
              convertString( VALUE_TYPE_BIGNUMBER );
            } catch ( KettleValueException e ) {
              throw new IOException(
                "Unable to convert String to BigNumber while reading from data input stream ["
                  + getString() + "]" );
            }
          }
          break;
        case VALUE_TYPE_DATE:
          if ( dis.readBoolean() ) {
            setValue( new Date( dis.readLong() ) );
          }
          break;
        case VALUE_TYPE_NUMBER:
          setValue( dis.readDouble() );
          break;
        case VALUE_TYPE_INTEGER:
          setValue( dis.readLong() );
          break;
        case VALUE_TYPE_BOOLEAN:
          setValue( dis.readBoolean() );

View on GitHub (pinned to f3058517a1)