public void CleanOldData(CleanUpRequest cleanUpRequest)
        {
            var lastCleaned          = _taskRepository.GetLastTaskCleanUpTime(cleanUpRequest.TaskId);
            var periodSinceLastClean = DateTime.UtcNow - lastCleaned;

            if (periodSinceLastClean > cleanUpRequest.TimeSinceLastCleaningThreashold)
            {
                _taskRepository.SetLastCleaned(cleanUpRequest.TaskId);
                var taskDefinition = _taskRepository.EnsureTaskDefinition(cleanUpRequest.TaskId);
                CleanListItems(cleanUpRequest.TaskId, taskDefinition.TaskDefinitionId, cleanUpRequest.ListItemDateThreshold);
                CleanOldData(cleanUpRequest.TaskId, taskDefinition.TaskDefinitionId, cleanUpRequest.GeneralDateThreshold);
            }
        }
示例#2
0
 private void StartCleanOldData(string applicationName, string taskName)
 {
     try
     {
         var configuration = _tasklingConfiguration.GetTaskConfiguration(applicationName, taskName);
         var request       = new CleanUpRequest()
         {
             TaskId = new TaskId(applicationName, taskName),
             GeneralDateThreshold            = DateTime.UtcNow.AddDays(-1 * configuration.KeepGeneralDataForDays),
             ListItemDateThreshold           = DateTime.UtcNow.AddDays(-1 * configuration.KeepListItemsForDays),
             TimeSinceLastCleaningThreashold = new TimeSpan(configuration.MinimumCleanUpIntervalHours, 0, 0)
         };
         _cleanUpRepository.CleanOldData(request);
     }
     catch (Exception ex)
     {
         Trace.TraceError("Failed to clean old data. If this continues, data size could grow very large. " + ex);
     }
 }
示例#3
0
        public async Task <bool> CleanOldDataAsync(CleanUpRequest cleanUpRequest)
        {
            var lastCleaned = await _taskRepository.GetLastTaskCleanUpTimeAsync(cleanUpRequest.TaskId).ConfigureAwait(false);

            var periodSinceLastClean = DateTime.UtcNow - lastCleaned;

            if (periodSinceLastClean > cleanUpRequest.TimeSinceLastCleaningThreashold)
            {
                await _taskRepository.SetLastCleanedAsync(cleanUpRequest.TaskId).ConfigureAwait(false);

                var taskDefinition = await _taskRepository.EnsureTaskDefinitionAsync(cleanUpRequest.TaskId).ConfigureAwait(false);
                await CleanListItemsAsync(cleanUpRequest.TaskId, taskDefinition.TaskDefinitionId, cleanUpRequest.ListItemDateThreshold).ConfigureAwait(false);
                await CleanOldDataAsync(cleanUpRequest.TaskId, taskDefinition.TaskDefinitionId, cleanUpRequest.GeneralDateThreshold).ConfigureAwait(false);

                return(true);
            }

            return(false);
        }
示例#4
0
        private async Task StartCleanOldDataAsync(string applicationName, string taskName, string taskExecutionId)
        {
            var checkpoint = new TaskExecutionCheckpointRequest()
            {
                TaskExecutionId = taskExecutionId,
                TaskId          = new TaskId(applicationName, taskName)
            };

            try
            {
                var configuration = _tasklingConfiguration.GetTaskConfiguration(applicationName, taskName);
                var request       = new CleanUpRequest()
                {
                    TaskId = new TaskId(applicationName, taskName),
                    GeneralDateThreshold            = DateTime.UtcNow.AddDays(-1 * configuration.KeepGeneralDataForDays),
                    ListItemDateThreshold           = DateTime.UtcNow.AddDays(-1 * configuration.KeepListItemsForDays),
                    TimeSinceLastCleaningThreashold = new TimeSpan(configuration.MinimumCleanUpIntervalHours, 0, 0)
                };
                var cleaned = await _cleanUpRepository.CleanOldDataAsync(request).ConfigureAwait(false);

                if (cleaned)
                {
                    checkpoint.Message = "Data clean up performed";
                }
                else
                {
                    checkpoint.Message = "Data clean up skipped";
                }
            }
            catch (Exception ex)
            {
                checkpoint.Message = "Failed to clean old data. " + ex;
            }

            await LogCleanupAsync(checkpoint).ConfigureAwait(false);
        }