Currently, we have an issue with one of our sites that runs on the latest Umbraco version (8.18.0) that introduced content version cleanup.
The scheduled task fails to execute due to a time-out on the SQL database. We suspect that it’s caused by a large number of records that the script is trying to delete and it’s timing out because of it. In Umbraco we see this in the logging:
System.Data.SqlClient.SqlException (0x80131904): Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
The statement has been terminated. —> System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 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.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
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, TaskCompletionSource1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at StackExchange.Profiling.Data.ProfiledDbCommand.ExecuteNonQuery() in C:\projects\dotnet\src\MiniProfiler.Shared\Data\ProfiledDbCommand.cs:line 272
at Umbraco.Core.Persistence.FaultHandling.FaultHandlingDbCommand.b__31_0() in D:\a\1\s\src\Umbraco.Core\Persistence\FaultHandling\RetryDbConnection.cs:line 209
at Umbraco.Core.Persistence.FaultHandling.FaultHandlingDbCommand.<>c__DisplayClass33_01.<Execute>b__0() in D:\a\1\s\src\Umbraco.Core\Persistence\FaultHandling\RetryDbConnection.cs:line 222 at Umbraco.Core.Persistence.FaultHandling.RetryPolicy.ExecuteAction[TResult](Func1 func) in D:\a\1\s\src\Umbraco.Core\Persistence\FaultHandling\RetryPolicy.cs:line 172
at Umbraco.Core.Persistence.FaultHandling.FaultHandlingDbCommand.Execute[T](Func1 f) in D:\a\1\s\src\Umbraco.Core\Persistence\FaultHandling\RetryDbConnection.cs:line 219 at Umbraco.Core.Persistence.FaultHandling.FaultHandlingDbCommand.ExecuteNonQuery() in D:\a\1\s\src\Umbraco.Core\Persistence\FaultHandling\RetryDbConnection.cs:line 209 at NPoco.Database.ExecuteNonQueryHelper(DbCommand cmd) at NPoco.Database.NPoco.IDatabaseHelpers.ExecuteNonQueryHelper(DbCommand cmd) at NPoco.Database.Execute(String sql, CommandType commandType, Object[] args) at NPoco.Database.Execute(Sql Sql) at Umbraco.Core.Persistence.Repositories.Implement.DocumentVersionRepository.DeleteVersions(IEnumerable1 versionIds) in D:\a\1\s\src\Umbraco.Core\Persistence\Repositories\Implement\DocumentVersionRepository.cs:line 123
at Umbraco.Core.Services.Implement.ContentService.CleanupDocumentVersions(DateTime asAtDate) in D:\a\1\s\src\Umbraco.Core\Services\Implement\ContentService.cs:line 3353
at Umbraco.Core.Services.Implement.ContentService.PerformContentVersionCleanup(DateTime asAtDate) in D:\a\1\s\src\Umbraco.Core\Services\Implement\ContentService.cs:line 3232
at Umbraco.Web.Scheduling.ContentVersionCleanup.PerformRun() in D:\a\1\s\src\Umbraco.Web\Scheduling\ContentVersionCleanup.cs:line 68
at Umbraco.Web.Scheduling.RecurringTaskBase.Run() in D:\a\1\s\src\Umbraco.Web\Scheduling\RecurringTaskBase.cs:line 67
at Umbraco.Web.Scheduling.BackgroundTaskRunner`1.d__40.MoveNext() in D:\a\1\s\src\Umbraco.Web\Scheduling\BackgroundTaskRunner.cs:line 569
Has anyone run into this issue? The project is around for quite some time, so there is a lot of page history present in the database. Maybe that’s causing issues?
This is a companion discussion topic for the original entry at https://our.umbraco.com/forum/108473-contentversioncleanup-task-fails