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); } }
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); } }
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); }
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); }