0
Fixed

Error thrown following connector full imports

Matthew Clark 7 years ago • updated by anonymous 3 years ago 4

When a connector full import runs, the following error is thrown when attempting to stop change detection. _RunningChangeDetectionTasks is an empty dictionary:

The given key was not present in the dictionary.
> Unify.Framework.Collections.dll!Unify.Framework.Collections.ThreadsafeDictionaryBase<System.Guid,Unify.Framework.Collections.IThreadsafeCollection<System.Guid>,System.Collections.Generic.IDictionary<System.Guid,Unify.Framework.Collections.IThreadsafeCollection<System.Guid>>>.thisSystem.Guid.get(System.Guid key) Line 184 + 0x89 bytes C#
Unify.IdentityBroker.ChangeDetection.Engine.dll!Unify.Product.IdentityBroker.ConnectorStatisticsEngine.StopChangeDetection(System.Guid connectorId, System.Guid taskId) Line 843 + 0x57 bytes C#
Unify.IdentityBroker.ChangeDetection.Engine.dll!Unify.Product.IdentityBroker.ConnectorStatisticsEngine.SetChangeDetectionValues.AnonymousMethod__21() Line 730 + 0x98 bytes C#
Unify.Framework.Scheduling.Job.dll!Unify.Framework.ExtensionMethods.WaitOnMutex(System.Threading.Mutex mutex, System.Action work) Line 21 + 0xf bytes C#
Unify.IdentityBroker.ChangeDetection.Engine.dll!Unify.Product.IdentityBroker.ConnectorStatisticsEngine.SetChangeDetectionValues(System.Guid taskId, System.Guid connectorId, System.DateTime time, System.TimeSpan duration, Unify.Framework.Collections.IDictionaryTwoPassDifferenceReport<System.Guid,Unify.Product.IdentityBroker.IEntity,Unify.Framework.Collections.GroupedNameValueCollectionKey,Unify.Framework.IValue> differenceReport, bool succeeded, string errorMessage) Line 728 + 0x54 bytes C#
Unify.IdentityBroker.ChangeDetection.Engine.dll!Unify.Product.IdentityBroker.ConnectorStatisticsEngine.Notify(Unify.Product.IdentityBroker.IChangeDetectionProcessChangeRegisterItemsCompletedEvent message) Line 355 + 0x1a9 bytes C#
Unify.Framework.Notification.dll!Unify.Framework.Notification.NotificationSinkList<Unify.Product.IdentityBroker.IChangeDetectionProcessChangeRegisterItemsCompletedEvent>.Notify.AnonymousMethod__0(Unify.Framework.Notification.INotificationSink<Unify.Product.IdentityBroker.IChangeDetectionProcessChangeRegisterItemsCompletedEvent> sink) Line 23 + 0x6f bytes C#
Unify.Framework.DesignPatterns.dll!Unify.Framework.Visitor.Visit<Unify.Framework.Notification.INotificationSink<Unify.Product.IdentityBroker.IChangeDetectionProcessChangeRegisterItemsCompletedEvent>>.AnonymousMethod__0(Unify.Framework.Notification.INotificationSink<Unify.Product.IdentityBroker.IChangeDetectionProcessChangeRegisterItemsCompletedEvent> item, int index) Line 23 + 0x24 bytes C#
Unify.Framework.DesignPatterns.dll!Unify.Framework.Visitor.Visit<Unify.Framework.Notification.INotificationSink<Unify.Product.IdentityBroker.IChangeDetectionProcessChangeRegisterItemsCompletedEvent>>(System.Collections.Generic.IEnumerable<Unify.Framework.Notification.INotificationSink<Unify.Product.IdentityBroker.IChangeDetectionProcessChangeRegisterItemsCompletedEvent>> visitCollection, System.Action<Unify.Framework.Notification.INotificationSink<Unify.Product.IdentityBroker.IChangeDetectionProcessChangeRegisterItemsCompletedEvent>,int> visitor) Line 48 C#
Unify.Framework.DesignPatterns.dll!Unify.Framework.Visitor.Visit<Unify.Framework.Notification.INotificationSink<Unify.Product.IdentityBroker.IChangeDetectionProcessChangeRegisterItemsCompletedEvent>>(System.Collections.Generic.IEnumerable<Unify.Framework.Notification.INotificationSink<Unify.Product.IdentityBroker.IChangeDetectionProcessChangeRegisterItemsCompletedEvent>> visitCollection, System.Action<Unify.Framework.Notification.INotificationSink<Unify.Product.IdentityBroker.IChangeDetectionProcessChangeRegisterItemsCompletedEvent>> visitor) Line 24 C#
Unify.Framework.Notification.dll!Unify.Framework.Notification.NotificationSinkList<Unify.Product.IdentityBroker.IChangeDetectionProcessChangeRegisterItemsCompletedEvent>.Notify(Unify.Product.IdentityBroker.IChangeDetectionProcessChangeRegisterItemsCompletedEvent message) Line 24 C#
Unify.Framework.Notification.dll!Unify.Framework.Notification.NotificationSinkList<Unify.Product.IdentityBroker.IChangeDetectionProcessChangeRegisterItemsCompletedEvent>.NotifyRegisteredSinksOfMessage<Unify.Framework.Notification.INotificationMessage>(Unify.Framework.Notification.INotificationMessage message) Line 38 C#
Unify.Framework.Notification.dll!Unify.Framework.Notification.NotificationMessageService.NotifyRegisteredSinksOfMessage<Unify.Framework.Notification.INotificationMessage>.AnonymousMethod__2(System.Collections.Generic.KeyValuePair<System.Type,Unify.Framework.Notification.IRegisteredNotificationSinkList> sinkList) Line 72 + 0xa0 bytes C#
Unify.Framework.DesignPatterns.dll!Unify.Framework.Visitor.Visit<System.Collections.Generic.KeyValuePair<System.Type,Unify.Framework.Notification.IRegisteredNotificationSinkList>>.AnonymousMethod__0(System.Collections.Generic.KeyValuePair<System.Type,Unify.Framework.Notification.IRegisteredNotificationSinkList> item, int index) Line 23 + 0x3a bytes C#
Unify.Framework.DesignPatterns.dll!Unify.Framework.Visitor.Visit<System.Collections.Generic.KeyValuePair<System.Type,Unify.Framework.Notification.IRegisteredNotificationSinkList>>(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<System.Type,Unify.Framework.Notification.IRegisteredNotificationSinkList>> visitCollection, System.Action<System.Collections.Generic.KeyValuePair<System.Type,Unify.Framework.Notification.IRegisteredNotificationSinkList>,int> visitor) Line 48 C#
Unify.Framework.DesignPatterns.dll!Unify.Framework.Visitor.Visit<System.Collections.Generic.KeyValuePair<System.Type,Unify.Framework.Notification.IRegisteredNotificationSinkList>>(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<System.Type,Unify.Framework.Notification.IRegisteredNotificationSinkList>> visitCollection, System.Action<System.Collections.Generic.KeyValuePair<System.Type,Unify.Framework.Notification.IRegisteredNotificationSinkList>> visitor) Line 24 C#
Unify.Framework.Notification.dll!Unify.Framework.Notification.NotificationMessageService.NotifyRegisteredSinksOfMessage<Unify.Framework.Notification.INotificationMessage>(Unify.Framework.Notification.INotificationMessage message) Line 73 C#
Unify.Framework.Notification.Async.dll!Unify.Framework.Notification.AsyncRegisteredNotificationSinkListDecoratorBase<Unify.Framework.Notification.INotificationMessageService>.DeliverMessages() Line 49 C#
Unify.Framework.Notification.Async.dll!Unify.Framework.Notification.ScheduledNotificationMessageServiceDecorator.DeliverMessages() Line 44 C#
Unify.Framework.Notification.Async.dll!Unify.Framework.Notification.ScheduledNotificationMessageServiceDecorator.DeliverMessagesJob.RunBase() Line 123 C#
Unify.Framework.Scheduling.Job.dll!Unify.Framework.JobBase.Run() Line 16 C#
Unify.Framework.Scheduling.Job.dll!Unify.Framework.AsynchronousJobExecutor.PerformJobCallback(object state) Line 29 + 0x20 bytes C#

Affected Versions:
Fixed by Version:

Lowering priority - the issue only seems to affect the information that would be displayed by the connector statistics engine.

Requests to clear this information are not locked, so you can have overlapping clears - however considering the request to clear subsequently recalculates you can't have missing information. This has been fixed up in the latest commit.