Reports failing with error: 0 != mRangedChildCount


Sensage AP Analyzer reports are not running and you get the error message: 0 != mRangedChildCount. In the logs, this could look like: ERROR: Table...has 'mRangedChildCount' !=0' INDEX node corruption.



Root Cause

This usually happens due to a corrupted NODE.dat file in an empty table and the corruption must be manually analyzed and removed to let reports run again.

There are several situations that can lead to data corruption in the SLS. The most common ones are:

  • Unclean reset or shutdown on one or more SLS nodes while loading or compacting data.
  • I/O errors on one or more SLS nodes while loading or compacting data.



IMPORTANT NOTE: fixing corrupt files on the SLS/EDW can result in data loss in the affected nodes. Altering tables is a high-risk procedure. Please reach the Sensage AP Support team if you have questions or request a screen-sharing session.

<supportagent>Here are two example tickets where this issue was resolved by the L2 agent via a troubleshooting call with the customer. The tickets also have recordings of the Zoom sessions: 2870349, 201398. </supportagent>

The error indicates a NODE.dat corruption in an empty table which can be solved with the following steps:

  • Check the status of the tables. When you get an error trying to open a table in a certain namespace, that indicates the table where the NODE.dat corruption is. Inspect the datastore in all the SLS nodes, in the Primary and Secondary slices, to find all the affected nodes.
  • Confirm that the table is empty for all nodes. If the table has no data but has an Index-type NODE.dat file referencing no directories, that's what was causing the 0 != mRangedChildCount​ error.
  • Drop the empty table using: /opt/sensage/latest/bin/atmanage [host]:8072 --user=administrator --shared-secret=file:/opt/sensage/latest/etc/sls/instance [. . .] shared_secret.asc --namespace=[example.cdr] --skip-queues droptbl [table_name]. This is what the command should look like, but every user should customize the variable [ ] fields accordingly. You should get a success message saying "Table dropped" as a confirmation.
  • Re-create the empty table with a manual empty file load:
    • Switch to the collector node. 
    • cd /opt/sensage/latest/etc/collector/
    • touch emptyfile
    • /opt/sensage/latest/bin/atload [host]:8072 --user=administrator --shared-secret=file:/opt/sensage/latest/etc/sls/instance/[. . .]/shared_secret.asc --namespace=[example.cdr] [table_name] /sensage/adapters/cdr/[example.ptl] emptyfile
  • To check that the empty table has been created now you can run: /opt/sensage/latest/bin/atview [host]:8072 --user=administrator --shared-secret=file:/opt/sensage/latest/etc/sls/instance/[. . .]/shared_secret.asc --namespace=[example.cdr] tables --timestamps. You will see the table recreated with (no records).
  • Try to run reports now. They should run correctly.



Please sign in to leave a comment.