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.");
            }
        }
Beispiel #2
0
        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.");
                }
            }
        }