public void Sweep() { Logger.Debug("Beginning sweep."); try { // Only allow this task to run on one farm node at a time. IDistributedLock @lock; if (_distributedLockService.TryAcquireLock(GetType().FullName, TimeSpan.FromHours(1), out @lock)) { using (@lock) { // We don't need to check the audit trail for events to remove every minute. Let's stick with twice a day. if (!GetIsTimeToTrim()) { return; } Logger.Debug("Starting audit trail trimming."); var deletedRecords = _auditTrailManager.Trim(TimeSpan.FromDays(Settings.RetentionPeriod)); Logger.Debug("Audit trail trimming completed. {0} records were deleted.", deletedRecords.Count()); Settings.LastRunUtc = _clock.UtcNow; } } else { Logger.Debug("Distributed lock could not be acquired; going back to sleep."); } } catch (Exception ex) { Logger.Error(ex, "Error during sweep."); } finally { Logger.Debug("Ending sweep."); } }
public void Sweep() { if (Monitor.TryEnter(_sweepLock)) { try { Logger.Debug("Beginning sweep."); // Only allow this task to run on one farm node at a time. if (_taskLeaseService.Acquire(GetType().FullName, _clock.UtcNow.AddHours(1)) != null) { // We don't need to check the audit trail for events to remove every minute. Let's stick with twice a day. if (!GetIsTimeToTrim()) { return; } Logger.Debug("Starting audit trail trimming."); var deletedRecords = _auditTrailManager.Trim(TimeSpan.FromDays(Settings.RetentionPeriod)); Logger.Debug("Audit trail trimming completed. {0} records were deleted.", deletedRecords.Count()); Settings.LastRunUtc = _clock.UtcNow; } } catch (Exception ex) { Logger.Error(ex, "Error during sweep."); } finally { Monitor.Exit(_sweepLock); Logger.Debug("Ending sweep."); } } }