Normalize task fails with deadlock error
Normalize task fails with deadlock error:
2021-03-08 17:23:55,752 0 ERROR BDNA20210305006031_CPU System.Data.SqlClient.SqlException (0x80131904): Transaction (Process ID 57) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. Error code : 0 Error message: Transaction (Process ID 57) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
--There are two mapping procedures - "_HW and _CPU" which are used to update the _CS table and _PR table respectively. Within the current settings, the two procedures are allowed to run concurrently. Specifically when _CPU procedure is called, the _HW is still updating the _CS table, and the _CPU procedure will need to pull some data from _CS table which will result in the deadlock issue.
-- Which is kind of a potential issue for all data sources, but the probability of occurrence is extremely low unless the data source has huge number of GS_COMPUTER_SYSTEM data.
-- Stop Data Platform service
-- Open Data Platform/Config/Norm.Configure.config
-- Add _HW (or _CPU) to the non-parallel procedure list, eg:
-- Start Data Platform service.
- Only the performance for _HW procedure could be affected, but the impact of the above change is very limited which can be ignored per the engineering team.