Details
Description
We found that some devices would not load the inventory page, the web interface would error out with a PHP memory exceed message.
After looking at the table, we found some entries where entPhysicalContainedIn is its own grandparent. Removing the device and rerunning the discovery did not resolve it.
+----------------+---------------+------------------+------------------------+------------------+-----------------+
|
| entPhysical_id | inventory_mib | entPhysicalIndex | entPhysicalContainedIn | entPhysicalDescr | entPhysicalName |
|
+----------------+---------------+------------------+------------------------+------------------+-----------------+
|
| 2915 | NETAPP-MIB | 1 | 0 | N6240 | Chassis |
|
| 2916 | NETAPP-MIB | 0 | 1 | Disk Enclosure | Disk Enclosure |
|
| 2917 | NETAPP-MIB | 257 | 0 | Power Supply 1 | Power Supply 1 |
|
| 2918 | NETAPP-MIB | 258 | 0 | Power Supply 2 | Power Supply 2 |
|
| 2919 | NETAPP-MIB | 259 | 0 | Power Supply 3 | Power Supply 3 |
|
| 2920 | NETAPP-MIB | 260 | 0 | Power Supply 4 | Power Supply 4 |
|
+----------------+---------------+------------------+------------------------+------------------+-----------------+
|
As a workaround, we limited the max depth, which allowed the inventory page for those affected devices to load.
Index: html/includes/print/inventory.inc.php
|
===================================================================
|
--- html/includes/print/inventory.inc.php (revision 13568)
|
+++ html/includes/print/inventory.inc.php (working copy)
|
@@ -442,7 +442,7 @@
|
echo($text);
|
|
$count = dbFetchCell("SELECT COUNT(*) FROM `entPhysical` WHERE `device_id` = ? AND `entPhysicalContainedIn` = ?", [$device['device_id'], $ent['entPhysicalIndex']]);
|
- if ($count) {
|
+ if ($count && $level < 4) {
|
echo("<ul>");
|
print_ent_physical($ent['entPhysicalIndex'], $level + 1, '');
|
echo("</ul>");
|
Not sure what the fix should be -
it could be in the discovery, MIB, device firmware bug, or logic in the inventory print code to break out if the entPhysicalContainedIn ID references a previously visited ID or is too deeply nested.
Attachments
Activity
Inventory not loading when entPhysicalContainedIn is it's own grandparent
Details
Description
We found that some devices would not load the inventory page, the web interface would error out with a PHP memory exceed message.
After looking at the table, we found some entries where entPhysicalContainedIn is its own grandparent. Removing the device and rerunning the discovery did not resolve it.
+----------------+---------------+------------------+------------------------+------------------+-----------------+
|
| entPhysical_id | inventory_mib | entPhysicalIndex | entPhysicalContainedIn | entPhysicalDescr | entPhysicalName |
|
+----------------+---------------+------------------+------------------------+------------------+-----------------+
|
| 2915 | NETAPP-MIB | 1 | 0 | N6240 | Chassis |
|
| 2916 | NETAPP-MIB | 0 | 1 | Disk Enclosure | Disk Enclosure |
|
| 2917 | NETAPP-MIB | 257 | 0 | Power Supply 1 | Power Supply 1 |
|
| 2918 | NETAPP-MIB | 258 | 0 | Power Supply 2 | Power Supply 2 |
|
| 2919 | NETAPP-MIB | 259 | 0 | Power Supply 3 | Power Supply 3 |
|
| 2920 | NETAPP-MIB | 260 | 0 | Power Supply 4 | Power Supply 4 |
|
+----------------+---------------+------------------+------------------------+------------------+-----------------+
|
As a workaround, we limited the max depth, which allowed the inventory page for those affected devices to load.
Index: html/includes/print/inventory.inc.php
|
===================================================================
|
--- html/includes/print/inventory.inc.php (revision 13568)
|
+++ html/includes/print/inventory.inc.php (working copy)
|
@@ -442,7 +442,7 @@
|
echo($text);
|
|
$count = dbFetchCell("SELECT COUNT(*) FROM `entPhysical` WHERE `device_id` = ? AND `entPhysicalContainedIn` = ?", [$device['device_id'], $ent['entPhysicalIndex']]);
|
- if ($count) {
|
+ if ($count && $level < 4) {
|
echo("<ul>");
|
print_ent_physical($ent['entPhysicalIndex'], $level + 1, '');
|
echo("</ul>");
|
Not sure what the fix should be -
it could be in the discovery, MIB, device firmware bug, or logic in the inventory print code to break out if the entPhysicalContainedIn ID references a previously visited ID or is too deeply nested.