public async Task ArchiveGroup_skips_over_empty_batches_but_still_completes() { // Arrange using (var documentStore = InMemoryStoreBuilder.GetInMemoryStore()) { var groupId = "TestGroup"; var previousArchiveBatchId = ArchiveBatch.MakeId(groupId, ArchiveType.FailureGroup, 1); using (var session = documentStore.OpenAsyncSession()) { var previousAchiveBatch = new ArchiveBatch { Id = previousArchiveBatchId }; await session.StoreAsync(previousAchiveBatch) .ConfigureAwait(false); var previousArchiveOperation = new ArchiveOperation { Id = ArchiveOperation.MakeId(groupId, ArchiveType.FailureGroup), RequestId = groupId, ArchiveType = ArchiveType.FailureGroup, TotalNumberOfMessages = 2, NumberOfMessagesArchived = 0, Started = DateTime.Now, GroupName = "Test Group", NumberOfBatches = 3, CurrentBatch = 0 }; await session.StoreAsync(previousArchiveOperation) .ConfigureAwait(false); await session.SaveChangesAsync() .ConfigureAwait(false); } var documentManager = new ArchiveDocumentManager(); var domainEvents = new FakeDomainEvents(); var archivingManager = new ArchivingManager(domainEvents); var retryingManager = new RetryingManager(domainEvents); var handler = new ArchiveAllInGroupHandler(documentStore, domainEvents, documentManager, archivingManager, retryingManager); var context = new TestableMessageHandlerContext(); var message = new ArchiveAllInGroup { GroupId = groupId }; // Act await handler.Handle(message, context) .ConfigureAwait(false); // Assert using (var session = documentStore.OpenSession()) { var loadedBatch = session.Load <ArchiveBatch>(previousArchiveBatchId); Assert.IsNull(loadedBatch); } } }
/// <summary> /// Executable Program that backs up logs and archives logs whenever it is called. /// </summary> static void Main(string[] args) { //TimeSpan of 2 hours for the archive retry TimeSpan ts = new TimeSpan(2, 0, 0); //New instance of ArchiveManager ArchivingManager archivingManager = new ArchivingManager(); //Backup the logs archivingManager.BackupLogs(); //Archive logs older than 2 years bool archived = false; archived = archivingManager.ArchiveLogs(); //Extract the log specified // //bool unarchived = archivingManager.ReverseArchive("05-01-2019"); //If logs fail to archive 1-3 times wait 2 hours then try again if (!archived && tries < 3) { try { System.Threading.Tasks.Task task = System.Threading.Tasks.Task.Delay(ts).ContinueWith(t => archivingManager.ArchiveLogs()); task.Wait(); } catch (Exception e) { Console.Write("2 Hour wait for re-archive has failed."); } } //Otherwise, stop archiving and email a system administrator else if (!archived && tries >= 3) { /*using (TaskService task = new TaskService()) * { * * Microsoft.Win32.TaskScheduler.Task td = task.FindTask("LogArchiver"); * td.Definition.Settings.Enabled = false; * Console.WriteLine("Email a System Administrator"); * tries = 0; * }*/ new ServiceLayer.EmailService().SendMail("*****@*****.**", "Notification from CheckIt", "Archiving is screwed up."); tries = 0; } }
internal FailureGroupsArchiveController(Lazy <IEndpointInstance> bus, ArchivingManager archivingManager) { this.bus = bus; this.archivingManager = archivingManager; }
internal UnacknowledgedGroupsController(ArchivingManager archivingManager, IDocumentStore store) { this.archivingManager = archivingManager; this.store = store; }