internal static async Task <BaseWorkItemQueue> GetNextWorkItemQueue(WorkItemQueueRunType workItemQueueRunType, StatefulService statefulService) { BackupRestoreTrace.TraceSource.WriteInfo("BackupRestore.GetNextWorkItemQueue", "workItemQueueRunType {0} ", workItemQueueRunType); BaseWorkItemQueue baseWorkItemQueue = null; switch (workItemQueueRunType) { case WorkItemQueueRunType.WorkItemQueue: baseWorkItemQueue = await WorkItemQueue1Min.CreateOrGetWorkItemQueue(statefulService); break; case WorkItemQueueRunType.WorkItemQueue1MinDelay: baseWorkItemQueue = await WorkItemQueue2Min.CreateOrGetWorkItemQueue(statefulService); break; case WorkItemQueueRunType.WorkItemQueue2MinDelay: baseWorkItemQueue = await WorkItemQueue4Min.CreateOrGetWorkItemQueue(statefulService); break; case WorkItemQueueRunType.WorkItemQueue4MinDelay: baseWorkItemQueue = await WorkItemQueue8Min.CreateOrGetWorkItemQueue(statefulService); break; case WorkItemQueueRunType.WorkItemQueue8MinDelay: baseWorkItemQueue = await WorkItemQueue8Min.CreateOrGetWorkItemQueue(statefulService); break; } BackupRestoreTrace.TraceSource.WriteInfo("BackupRestore.GetNextWorkItemQueue", "Next WorkItemQueue {0} ", baseWorkItemQueue.GetType()); return(baseWorkItemQueue); }
public virtual async Task ProcessFailureHandle(StatefulService statefulService, TimeSpan timeout, CancellationToken cancellationToken, string processQueueTypeTrace) { WorkItemProcessInfo workItemProcessInfo = await workItemInProcessStore.GetValueAsync(this.WorkItemGuid); BaseWorkItemQueue baseWorkItemQueue = await BaseWorkItemQueue.GetNextWorkItemQueue(workItemProcessInfo.WorkItemQueueRunType, statefulService); using (ITransaction transaction = statefulService.StateManager.CreateTransaction()) { await workItemInProcessStore.DeleteValueAsync(this.WorkItemGuid, timeout, cancellationToken, transaction); await baseWorkItemQueue.AddWorkItem(workItemProcessInfo, timeout, cancellationToken, transaction); await transaction.CommitAsync(); BackupRestoreTrace.TraceSource.WriteInfo(processQueueTypeTrace, "Process Failure Handle WorkItemInProcessStore Delete WorkItem {0} And Enqueue in {1} ", this, baseWorkItemQueue.GetType()); } }