Transformation Error After Upgrade

Started by sjudy, December 08, 2017, 04:21:34 AM

Previous topic - Next topic

sjudy

I am getting an odd transformation error (that never occurred before, until after the 2.2.1 update).  This is happening on the NetXMS server agent node.

(HOSTNAME xxx.xxx.xxx::227::TransformationScript) execution error: Error 13 in line 1: Cannot do automatic type cast

Unfortunately from this error I am not able to determine which of the several data collection items I have is the culprit.  I am getting results back on all my collection items, no invalid data but still getting the error... thoughts?

Thanks in advance!

sjudy

A little more info, I tracked down which item it was... it is actually a Sonicwall node, the transformation is a simple ($1 / 1000000) script.... I rebuilt the MIBS and rebooted... doubt that will help.

Victor Kirhenshtein


sjudy

Hi Victor,

These are Unsigned INT64

Also, I am finding (perhaps related) when I do an 'walk' on any SNMP object, I get: "Cannot do SNMP MIB tree walk: Access denied" and it worked before...

sjudy

I changed to INT and it works fine now... Thanks, I also found a thread on the SNMP walk issue.  Fixed the permission and all good now.

zoke

Hijacking this thread as I'm seeing the same error with transformation of uint64 after upgrade to 2.2.1

DCI in question is Filesystem.Free(/var)

Transformation script after trial and error

trace(0, $node->name . " " . $dci->name . " " . $1 . " " . typeof($1));
return uint64($1 / (1024 * 1024));


Relevant part from log when above DCI is polled

2017.12.12 03:57:13.034 *I* alina FileSystem.Free(/var) 58124193792 uint64
2017.12.12 03:57:13.034 *W* Failed to execute transformation script for object 865 "alina" DCI 813 "FileSystem.Free(/var)": Error 13 in line 2: Cannot do automatic type cast


Also tried without casting to uint64.

Changing the transformation script to return null (which from my understanding of the hint should return the raw value) results in free space being reported as 0. Actual value printed to log for reference.
Transformation script

trace(0, $node->name . " " . $dci->name . " " . $1 . " " . typeof($1));
return null;
return uint64($1 / (1024 * 1024));

Log

2017.12.12 04:07:10.221 *I* alina FileSystem.Free(/var) 58124161024 uint64


Transformation script before update was simply

$1 / (1024 * 1024)

Clearing out the transformation script returns the raw value.

zoke

Update...

Changing the transformation script to this works

return int64($1) / (1024 * 1024);