Hello,
We have an issue that has been ongoing since 2015 R4 (currently on 2016 R4 Patch 2) in that sporadically an agent will start their Interaction Desktop and all views are gone, leaving an empty workspace. We've advised the agents on properly exiting the desktop after customizing views. Additionally, we've not had repeat users having this issue. The only common thread I've found is an event in the interactiondesktop logs that complains "An item with the same key has already been added". We've been given the work around of deleting the user settings on both the desktop and server, however, that is an action for after the issue. I would like to entirely prevent this issue from happening.
This is the log entry:
IceLibJsonProfileItemDataUtilities.ItemFromPlainText : Error deserializing profile data.
...profile data...
Top Exception
Type=System.ArgumentException
Source=mscorlib
Message=An item with the same key has already been added.
StackTrace:
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at System.Collections.Generic.Dictionary`2.OnDeserialization(Object sender)
at System.Runtime.Serialization.DeserializationEventHandler.Invoke(Object sender)
at System.Runtime.Serialization.ObjectManager.RaiseDeserializationEvent()
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
at ININ.Cafe.Library.Base64StringSerializer.Deserialize(String s) in d:\builds\eic_2016r4_p02\products\eic\src\Cafe\Library\Base64StringSerializer.cs:line 40
at ININ.Cafe.Modules.ICSession.Library.Persistence.IceLibJsonProfileItemData.GetValue() in d:\builds\eic_2016r4_p02\products\eic\src\Cafe\Modules\ICSession\Library\Persistence\IceLibJsonProfileItemData.cs:line 109
at ININ.Cafe.Modules.ICSession.Library.Persistence.IceLibJsonProfileItemData.AsIceLibProfileItemData() in d:\builds\eic_2016r4_p02\products\eic\src\Cafe\Modules\ICSession\Library\Persistence\IceLibJsonProfileItemData.cs:line 54
at ININ.Cafe.Modules.ICSession.Library.Persistence.IceLibJsonProfileItemDataUtilities.ItemFromPlainText(String plainText) in d:\builds\eic_2016r4_p02\products\eic\src\Cafe\Modules\ICSession\Library\Persistence\IceLibJsonProfileItemData.cs:line 187
StackTrace:
at IceLibJsonProfileItemDataUtilities.ItemFromPlainText(String plainText) d:\builds\eic_2016r4_p02\products\eic\src\Cafe\Modules\ICSession\Library\Persistence\IceLibJsonProfileItemData.cs(193)
at CafeCustomProfileAdapter.GetProfileData(String namespacePath, String actualKey) d:\builds\eic_2016r4_p02\products\eic\src\Cafe\Modules\ICSession\Library\Persistence\CafeCustomProfileAdapter.cs(108)
at IceLibProfileNamespace.TryGetItem(String key, IProfileItem& foundItem) d:\builds\eic_2016r4_p02\products\eic\src\Cafe\Modules\ICSession\Library\Persistence\IceLibProfileNamespace.cs(118)
at ProfileNamespace.TryGetValue(String key, TValue& foundValue) d:\builds\eic_2016r4_p02\products\eic\src\Cafe\Library\Persistence\ProfileNamespace.cs(247)
at PersistenceService.TryGetProfileValue(ProfileLocation location, String namespacePath, String key, TValue& foundValue) d:\builds\eic_2016r4_p02\products\eic\src\Cafe\Library\Persistence\PersistenceService.cs(149)
at StatePersister`1.ININ.Cafe.Library.Content.Persistence.IStatePersister<TState>.TryGetState(String id, TState& state) d:\builds\eic_2016r4_p02\products\eic\src\Cafe\Library\Content\Persistence\StatePersister.cs(56)
at RestoreContentGroupOrderFromSessionFeature.PreCacheIndicesOnBackground() d:\builds\eic_2016r4_p02\products\eic\src\Cafe\Modules\ICSession\Library\Features\RestoreContentGroupOrderFromSessionFeature.cs(121)
at RestoreContentGroupOrderFromSessionFeature.<OnConnected>b__0(Object o) d:\builds\eic_2016r4_p02\products\eic\src\Cafe\Modules\ICSession\Library\Features\RestoreContentGroupOrderFromSessionFeature.cs(40)
at QueueUserWorkItemCallback.WaitCallback_Context(Object state)
at ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at ThreadPoolWorkQueue.Dispatch()