From 69eb505e2a3089828300bdad06e10adbfb307feb Mon Sep 17 00:00:00 2001 From: Rob King Date: Thu, 10 Nov 2016 21:20:24 +0000 Subject: [PATCH] Changed Audit Trail trimming task to delete all records in one batch, rather than iterating through the table records (#7361) --- .../Orchard.AuditTrail/Services/AuditTrailManager.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.AuditTrail/Services/AuditTrailManager.cs b/src/Orchard.Web/Modules/Orchard.AuditTrail/Services/AuditTrailManager.cs index 441c08c62..333e08046 100644 --- a/src/Orchard.Web/Modules/Orchard.AuditTrail/Services/AuditTrailManager.cs +++ b/src/Orchard.Web/Modules/Orchard.AuditTrail/Services/AuditTrailManager.cs @@ -18,6 +18,7 @@ using Orchard.Settings; namespace Orchard.AuditTrail.Services { public class AuditTrailManager : Component, IAuditTrailManager { private readonly IRepository _auditTrailRepository; + private readonly ITransactionManager _transactionManager; private readonly IAuditTrailEventProvider _providers; private readonly IClock _clock; private readonly IAuditTrailEventHandler _auditTrailEventHandlers; @@ -30,6 +31,7 @@ namespace Orchard.AuditTrail.Services { public AuditTrailManager( IRepository auditTrailRepository, + ITransactionManager transactionManager, IAuditTrailEventProvider providers, IClock clock, IAuditTrailEventHandler auditTrailEventHandlers, @@ -41,6 +43,7 @@ namespace Orchard.AuditTrail.Services { IClientHostAddressAccessor clientHostAddressAccessor) { _auditTrailRepository = auditTrailRepository; + _transactionManager = transactionManager; _providers = providers; _clock = clock; _auditTrailEventHandlers = auditTrailEventHandlers; @@ -200,13 +203,10 @@ namespace Orchard.AuditTrail.Services { public IEnumerable Trim(TimeSpan retentionPeriod) { var dateThreshold = (_clock.UtcNow.EndOfDay() - retentionPeriod); var query = _auditTrailRepository.Table.Where(x => x.CreatedUtc <= dateThreshold); - var records = query.ToArray(); - foreach (var record in records) { - _auditTrailRepository.Delete(record); - } + _transactionManager.GetSession().Delete(query); - return records; + return query.ToArray(); } public string SerializeProviderConfiguration(IEnumerable settings) {