ContentVersionCleanup task fails

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