cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Symptoms:

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)

 

Root Cause:

--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.

 

Workaroud:

-- Stop Data Platform service
-- Open Data Platform/Config/Norm.Configure.config
-- Add _HW (or _CPU) to the non-parallel procedure list, eg:
<NonParallelSpPostfixList>_SYS,_PRI,_GRP,_E,_AE,_HW</NonParallelSpPostfixList>

-- Start Data Platform service.

 

Impacts:

- 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.

Was this article helpful? Yes No
No ratings
Version history
Last update:
‎Mar 23, 2021 11:57 AM
Updated by: