The DX NetOps Performance Management Portal web UI shows a red failure icon for the System Status.
The System Status page shows the Global Synchronization has failed.
The following error message is seen in the (default path shown) /opt/CA/PerformanceCenter/DM/logs/DMService.log file.
RROR | pool-7-thread-1 | 2024-12-01 18:30:41,763 | com.ca.im.portal.dm.productsync.DataSourcePoller
| Exception thrown by sync task: org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [UPDATE items i INNER JOIN item_members im ON i.ItemID=im.ParentID AND i.ItemType=101 INNER JOIN t_component o ON i.ItemID=o.ItemID INNER JOIN t_address t ON im.ChildID=t.ItemID SET t.OwnerItemID=i.ItemID, t.OwnerAlternateName=o.OwnerAlternateName, t.OwnerItemName=o.OwnerItemName, t.OwnerLifeCycleState=o.OwnerLifeCycleState, t.OwnerLifeCycleStateLastChangedOn=o.OwnerLifeCycleStateLastChangedOn WHERE (im.UpdatedOn>=1732415670 OR i.UpdatedOn>=1732415670 OR t.OwnerItemID IS NULL)]; Column 'OwnerItemName' cannot be null; nested exception is java.sql.SQLIntegrityConstraintViolationException: Column 'OwnerItemName' cannot be null
All supported DX NetOps Performance Management releases 24.3.4 and earlier
VNA plugin is contributing Virtual Interface items with no parent device name to the Data Aggregator (DA) inventory. This syncs them to the Portal inventory with OwnerItemName=NULL.
The Portal Global Sync throws an error, failing to completes it's Interface sync stage, due to the presence of the items with OwnerItemName=NULL.
Which items are set with OwnerItemName=NULL?
select * from t_component where OwnerItemName is NULL;
Confirm they are set with the Virtual Interface ItemSubType value, indicating they are from VNA. Note the ItemSubType value from the t_component query. Use it in this query.
select * from item_types where ItemSubType = <ItemSubType-in-t_component>;
It should show them as Virtual Interface like this example. Note your ItemSubType ID may be different than this example.
We then need to determine the DA Item_ID value, represented by the LocalID value in the netqosportal MySql DB on Portal. We'll use that list to delete the offending items. Run the following command from the (default path shown) /opt/CA/MySql/bin directory.
./mysql -unetqos -p netqosportal -N -e "select localid from dst_component where itemid in (select itemid from t_component where OwnerItemName is NULL);" > /tmp/components.out
Enter the password when prompted. Change the /tmp location and output file name as needed.
To remove the offending items we use the deleteSyncableItemsInFile script that is attached to this article. Use the components.out file to feed the script a list of items to remove.
The basic syntax for usage is:
./deleteSyncableItemsInFile.pl -da <serverName> -f <fileName> -u <adminRoleUser> -pw <userPassword>
It will print the state of the item deletions. When it completes we need to wait for a DA incremental sync. Then the next Global Sync should remove the offending items and resolve the failure.
Note that some instances were seen where the items are contributed continually from VNA. In that instance we have a few options to prevent them from returning and breaking GS again.
This can also lead to the Spectrum Data Source failing to synchronize. Review the following article for the error message that indicates Spectrum DS sync failure is related to this GS failure.
Article Title: DX Netops Portal failing to sync with DX Netops Spectrum