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
- Call with both arguments, e.g. resolveIP(ip, true) per your Kettle version's signature.
- Check your Kettle/PDI version's documentation for resolveIP's exact parameter list, since it changed across versions.
- 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
- Pass both arguments including the boolean flag
- Check your PDI version's signature - it changed across releases
- Treat the "-" return value as a lookup failure, not an error
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
- Please provide a valid date to the function call date2str.
- Row.EndOfFileReached
- Row.EndOfFileReadingRow
- Row.ErrorWritingRow
- Row.RowError
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)