i noticed one issue in our all workflows which having below highlighted wait condition .
Issue 1 : Wait condition take 10 -20 mins after condition met then execute workflow .This started after installing SP1.1 (crm2016 8.1.1)
issue 2: Wait condition failed after upgrading from CRM 8.1.1 to CRM 8.2.2 . Workflow details and trace error message below
Trace Error
at CrmException..ctor(String message, Exception innerException) ilOffset = 0xF
at MetadataCache.LoadCache(IOrganizationContext context, Boolean fileOnlyIfExists) ilOffset = 0xF3
at MetadataCache.GetInstance(IOrganizationContext context) ilOffset = 0x9A
at AsyncOperationQueueDataAccess.GetEntityLogicalNameFromObjectTypeCode(Int32 objectTypeCode) ilOffset = 0x10
at AsyncOperationQueueDataAccess.GetLookup(Object objectId, String objectIdName, Int32 objectTypeCode) ilOffset = 0x5
at <>c__DisplayClass5.<SelectEvents>b__1(Object[] values) ilOffset = 0x57
at DataAccessBase.ExecuteSqlCommandAndProcessRecords(IDbCommand command, RecordProcessor recordProcessor, Guid inputOrganizationId) ilOffset = 0x9F
at DataAccessBase.ExecuteSqlCommandAndProcessRecords(IDbCommand command, RecordProcessor recordProcessor) ilOffset = 0x0
at <>c__DisplayClass5.<SelectEvents>b__0(IServiceOperation operation) ilOffset = 0x1D
at OrganizationOperation.<get_EventAction>b__0(IServiceOperation operation) ilOffset = 0x0
at FaultToleranceBehavior.Execute(ServiceOperationAction operation, IServiceOperation operationParameter) ilOffset = 0x18
at IsolatedOperation.Execute() ilOffset = 0x27
at MonitoredOperation.Execute() ilOffset = 0xD
at AsyncOperationQueueDataAccess.SelectEvents(Int32 numberOfEvents) ilOffset = 0x123
at SynchronousQueueManager`1.SelectEvents(IOrganizationConfiguration orgConfig, Int32 orgCapacity) ilOffset = 0x8
at SynchronousQueueManager.OnSelectPerOrganization(IOrganizationConfiguration orgConfig, Int32 orgCapacity) ilOffset = 0x1E
at OutstandingOperationAwareWorkloadThrottler.AllocateWorkForOrganization(WorkloadThrottlingInformation orgThrottlingInformation, Int32 allocatedCapacity, AsyncSelectExecutionTracker selectExecutionTracker) ilOffset = 0x5A
at WorkloadThrottler.HandleIdleOrganization(WorkloadThrottlingInformation orgPollingInfo, Int32 effectiveMinimumPriority, AsyncSelectExecutionTracker selectExecutionTracker) ilOffset = 0x34
at <>c__DisplayClass5.<AllocateWork>b__2(IServiceOperation operation) ilOffset = 0x36
at OrganizationOperation.<get_EventAction>b__0(IServiceOperation operation) ilOffset = 0x0
at FaultToleranceBehavior.Execute(ServiceOperationAction operation, IServiceOperation operationParameter) ilOffset = 0x18
at IsolatedOperation.Execute() ilOffset = 0x27
at MonitoredOperation.Execute() ilOffset = 0xD
at ParallelTasksExecutionEngine.ExecuteOperation(IServiceOperation serviceOperation) ilOffset = 0x18
at <>c__DisplayClass17_0`1.<ForWorker>b__1() ilOffset = 0x11A
at Task.InnerInvokeWithArg(Task childTask) ilOffset = 0x6
at <>c__DisplayClass176_0.<ExecuteSelfReplicating>b__0(Object ) ilOffset = 0x86
at ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) ilOffset = 0x79
at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) ilOffset = 0x9
at Task.ExecuteWithThreadLocal(Task& currentTaskSlot) ilOffset = 0xE1
at Task.ExecuteEntry(Boolean bPreventDoubleExecution) ilOffset = 0x96
at ThreadPoolTaskScheduler.TryExecuteTaskInline(Task task, Boolean taskWasPreviouslyQueued) ilOffset = 0xF
at TaskScheduler.TryRunInline(Task task, Boolean taskWasPreviouslyQueued) ilOffset = 0x4C
at Task.InternalRunSynchronously(TaskScheduler scheduler, Boolean waitForCompletion) ilOffset = 0x83
at Parallel.ForWorker(Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally) ilOffset = 0x1A9
at Parallel.ForEachWorker(IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally) ilOffset = 0x44
at Parallel.ForEach(IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body) ilOffset = 0x2A
at ParallelTasksExecutionEngine.StartOperation() ilOffset = 0x19
at WorkloadThrottler.AllocateWork(CancellationToken cancellationToken) ilOffset = 0x1FE
at SynchronousQueueManager.OnSelectTimerEvent(CancellationToken token) ilOffset = 0x3A
at OrganizationOperation.<get_EventAction>b__0(IServiceOperation operation) ilOffset = 0x0
at FaultToleranceBehavior.Execute(ServiceOperationAction operation, IServiceOperation operationParameter) ilOffset = 0x18
at IsolatedOperation.Execute() ilOffset = 0x27
at MonitoredOperation.Execute() ilOffset = 0xD
at TimerBasedExecutionEngine.OnTimerEvent(Object sender, ElapsedEventArgs e) ilOffset = 0xC
at Timer.InvokeElapsedWithCancellationToken(Object state) ilOffset = 0x1D
at ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) ilOffset = 0x79
at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) ilOffset = 0x9
at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() ilOffset = 0x35
at ThreadPoolWorkQueue.Dispatch() ilOffset = 0xA4
Crm Exception: Message: An item with the same key has already been added., ErrorCode: -2147220970, InnerException: System.ArgumentException: An item with the same key has already been added.
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at Microsoft.Crm.Metadata.PreloadedOptionSetMetadataDataProvider.LoadNormalOptions(IPreloadedMetadataInitializationContext context, Boolean initializeEnumOptionProvider)
at Microsoft.Crm.Metadata.PreloadedMetadataCacheDataProvider.InitializeOptionSets(IPreloadedMetadataInitializationContext context, LoadMasks masks, IOrganizationContext organizationContext)
at Microsoft.Crm.Metadata.PreloadedMetadataCacheDataProvider.Initialize(IOrganizationContext organizationContext, MetadataContainer container, LoadMasks masks)
at Microsoft.Crm.Metadata.MultiOrgSharableMetadataCacheLoader.CreateMetadataCacheDataProvider(MetadataContainer container, LoadMasks masks, CounterList counter)
at Microsoft.Crm.Metadata.DynamicMetadataCacheLoader.BuildMetadataCacheFromMetadataContainer(MetadataContainer container, LoadMasks masks, CounterList counter)
at Microsoft.Crm.Metadata.DynamicMetadataCacheLoader.LoadCacheFromDatabaseInternal(LoadMasks masks, CrmDbConnection connection, CrmTransaction transaction, CounterList counter)
at Microsoft.Crm.Metadata.DynamicMetadataCacheLoader.LoadCacheFromDatabase(LoadMasks masks, CounterList counter)
at Microsoft.Crm.Metadata.DynamicMetadataCacheFactory.LoadMetadataCache(LoadMethod method, CacheType type, IOrganizationContext context)
at Microsoft.Crm.Metadata.MetadataCache.LoadCache(IOrganizationContext context, Boolean fileOnlyIfExists)