Discovery throws Shazzam error: [code]Sensor error when processing Shazzam: InternalError: Cannot convert NaN to java.lang.Integer (sys_script_include.4b231fc3c3727200e412bea192d3ae3c.script; line 44)


Description

When running Discovery for a device which has a set of credentials, Discovery throws the following error message:

Shazzam error: Sensor error when processing Shazzam: InternalError: Cannot convert NaN to java.lang.Integer (sys_script_include.4b231fc3c3727200e412bea192d3ae3c.script; line 44)

Release or Environment

All.

Cause

The cause of this is due to the Windows Host Machine where customer holds the MID Servers having multiple installations of JRE. Given this scenario, the MID Server might get conflicted into understanding which JRE it should use and hence it is throwing this error, which is not entirely related to Shazzam.

This may be related to the requirement to manually configure a JRE for a London MID Server, which is no longer necessary.

Note: A similar error message can be caused by an empty password field in one of the Credential records. See KB0726934

Resolution

The recommended solution is to set the mid server installation up to use the OpenJDK based JRE provided by ServiceNow. This lives in the agent\jre folder of the installation.

There are 2 steps to doing that:

  1. Check the jre folder is present, and is the OpenJDK one. 
    The MID Server installer for all latest patches of London, Madrid, New York include this jre folder.
    Alternatively see: KB0745163 MID Server download packages for installing OpenJDK on Windows and Linux hosts
  2. Check that the agent\conf\wrapper-override.conf file is set up to use that JRE
    see: KB0719389 Switching the MID Server from an existing Java Runtime Environment (JRE) to the OpenJDK provided by ServiceNow

If for policy reasons you cannot use the bundles JRE version (in New York this is OpenJDK 1.8.0_181-sncmid1), and must use a later patch, follow this process:
KB0739801 Configure a MID Server on Windows to use an existing JRE

Be sure to use the same Java version (e.g. 1.8 / Java 8), and the same or later patch level as the bundled JRE.