CompuMasterGmbH / cammIntegrationPortal

camm Integration Portal (based on camm Web-Manager)
MIT License
2 stars 1 forks source link

Database deadlock situation found #52

Closed jochenwezel closed 6 years ago

jochenwezel commented 7 years ago

There might be deadlock situations when running the asynchronous webcron cleanup tasks:

CompuMaster.camm.WebManager.Tools.Data.DataQuery.AnyIDataProvider+DataException:   Data layer exception 

System.Data.SqlClient.SqlException: Die   Transaktion (Prozess-ID 52) befand sich auf Sperre Ressourcen aufgrund eines   anderen Prozesses in einer Deadlocksituation und wurde als Deadlockopfer   ausgewählt. Führen Sie die Transaktion erneut aus. 
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) 
at   System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand   cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler,   TdsParserStateObject stateObj, Boolean& dataReady) 
at   System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() 
at   System.Data.SqlClient.SqlDataReader.get_MetaData() 
at   System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior   runBehavior, String resetOptionsString, Boolean isInternal, Boolean   forDescribeParameterEncryption) 
at   System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior   cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async,   Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry,   SqlDataReader ds, Boolean describeParameterEncryptionRequest) 
at   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior   cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method,   TaskCompletionSource`1 completion, Int32 timeout, Task& task,   Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) 
at   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior   cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) 
at   System.Data.SqlClient.SqlCommand.ExecuteScalar() 
at   CompuMaster.camm.WebManager.Tools.Data.DataQuery.AnyIDataProvider.ExecuteScalar(IDbCommand   dbCommand, Automations automations) in   D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\CommonTools\Tools.Data.vb:line   317 
--- End of inner exception stack trace --- 
at   CompuMaster.camm.WebManager.Tools.Data.DataQuery.AnyIDataProvider.ExecuteScalar(IDbCommand   dbCommand, Automations automations) in D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\CommonTools\Tools.Data.vb:line   319 
at CompuMaster.camm.WebManager.Log.DeleteExpiredEntries(Int32   maxNumberOfDeletedRows) in   D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\WMSystem\SubClasses\log.vb:line   1887 
at CompuMaster.camm.WebManager.Log.CleanUpLogTableInternal() in   D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\WMSystem\SubClasses\log.vb:line   1915 
at CompuMaster.camm.WebManager.Log.CleanUpLogTable() in   D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\WMSystem\SubClasses\log.vb:line   1898 
at   CompuMaster.camm.WebManager.WebServices.CoreWebCronJobRunner.RunCleanups() in   D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\WebServices\CoreWebCronJobs.vb:line   256 
at   CompuMaster.camm.WebManager.WebServices.CoreWebCronJobRunner.ExecutePendingProcesses(DateTime   requestStartTime, Int32 maxTotalSecondsTimeout) in   D:\svn_repository\compumaster_products\camm\Web-Manager\libraries\base\cammWM\WebServices\CoreWebCronJobs.vb:line   153 

CommandType: Text 
CommandText: DELETE FROM [dbo].[Log] WHERE ID IN (   SELECT TOP 500 ID FROM dbo.Log INNER JOIN (SELECT ValueInt as ConflictTypeID,   ValueDecimal as RetentionDays FROM dbo.System_GlobalProperties WHERE   PropertyName='ConflictTypeAge') AS RetentionConfig ON Log.ConflictType =   RetentionConfig.ConflictTypeID WHERE LoginDate < DateAdd(dd,   -COALESCE(RetentionDays, @DefaultRetentionDays), GETDATE()) ) SELECT @@ROWCOUNT   
Parameters: Parameter 0: @DefaultRetentionDays: 1460   
System.Data.SqlClient.SqlException detail data: HelpLink.ProdName=Microsoft   SQL Server 
System.Data.SqlClient.SqlException detail data:   HelpLink.ProdVer=10.50.6220 
System.Data.SqlClient.SqlException detail data:   HelpLink.EvtSrc=MSSQLServer 
System.Data.SqlClient.SqlException detail data:   HelpLink.EvtID=1205 
System.Data.SqlClient.SqlException detail data:   HelpLink.BaseHelpUrl=http://go.microsoft.com/fwlink   
System.Data.SqlClient.SqlException detail data: HelpLink.LinkId=20476
cmalbertschw commented 6 years ago

Appears to be a duplicate of #56, closed.