After upgrading to the latest nugets I noticed lots of errors in the server logs. The errors occur only in multi-server environment: when user modifies content on SERVER1, the error is logged on SERVER2.
2016-05-13 00:07:49,740 ERROR EPiServer.Events.Providers.EventProvider: Exception occured while raising MessageReceived for message '3' from 'XXXWEB02'
System.AggregateException: One or more errors occurred. ---> System.AggregateException: One or more errors occurred. ---> Newtonsoft.Json.JsonSerializationException: Unable to find a constructor to use for type EPiServer.Shell.UI.Messaging.Internal.PushMessage. A class should either have a default constructor, one constructor with arguments or a constructor marked with the JsonConstructor attribute. Path 'Topic', line 1, position 9.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateNewObject(JsonReader reader, JsonObjectContract objectContract, JsonProperty containerMember, JsonProperty containerProperty, String id, Boolean& createdFromNonDefaultCreator)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at EPiServer.Shell.UI.Messaging.Internal.DefaultPushMessenger.EventRaised(Object sender, EventNotificationEventArgs e)
at EPiServer.Events.Clients.Event.<>c__DisplayClass38_0.b__0()
at System.Threading.Tasks.Task.Execute()
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.Wait()
at EPiServer.Events.Clients.Event.Raise(Guid raiserId, Object param, EventRaiseOption raiseOption)
at EPiServer.Events.Clients.Event.RemoteEventReceived(Object sender, EventReceivedEventArgs e)
at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
at EPiServer.Events.Providers.EventProviderService.OnEventReceived(Object sender, EventReceivedEventArgs e)
--- End of inner exception stack trace ---
at EPiServer.Events.Providers.EventProviderService.OnEventReceived(Object sender, EventReceivedEventArgs e)
at EPiServer.Events.Providers.EventProviderService.Provider_OnMessageReceived(Object sender, EventMessageEventArgs e)
at EPiServer.Events.Providers.EventProvider.OnMessageReceived(EventMessageEventArgs args, Boolean suppressExceptions)
---> (Inner Exception #0) System.AggregateException: One or more errors occurred. ---> Newtonsoft.Json.JsonSerializationException: Unable to find a constructor to use for type EPiServer.Shell.UI.Messaging.Internal.PushMessage. A class should either have a default constructor, one constructor with arguments or a constructor marked with the JsonConstructor attribute. Path 'Topic', line 1, position 9.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateNewObject(JsonReader reader, JsonObjectContract objectContract, JsonProperty containerMember, JsonProperty containerProperty, String id, Boolean& createdFromNonDefaultCreator)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at EPiServer.Shell.UI.Messaging.Internal.DefaultPushMessenger.EventRaised(Object sender, EventNotificationEventArgs e)
at EPiServer.Events.Clients.Event.<>c__DisplayClass38_0.b__0()
at System.Threading.Tasks.Task.Execute()
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.Wait()
at EPiServer.Events.Clients.Event.Raise(Guid raiserId, Object param, EventRaiseOption raiseOption)
at EPiServer.Events.Clients.Event.RemoteEventReceived(Object sender, EventReceivedEventArgs e)
at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
at EPiServer.Events.Providers.EventProviderService.OnEventReceived(Object sender, EventReceivedEventArgs e)
---> (Inner Exception #0) Newtonsoft.Json.JsonSerializationException: Unable to find a constructor to use for type EPiServer.Shell.UI.Messaging.Internal.PushMessage. A class should either have a default constructor, one constructor with arguments or a constructor marked with the JsonConstructor attribute. Path 'Topic', line 1, position 9.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateNewObject(JsonReader reader, JsonObjectContract objectContract, JsonProperty containerMember, JsonProperty containerProperty, String id, Boolean& createdFromNonDefaultCreator)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at EPiServer.Shell.UI.Messaging.Internal.DefaultPushMessenger.EventRaised(Object sender, EventNotificationEventArgs e)
at EPiServer.Events.Clients.Event.<>c__DisplayClass38_0.b__0()
at System.Threading.Tasks.Task.Execute()<---><--- system.aggregateexception: one or more errors occurred. ---> System.AggregateException: One or more errors occurred. ---> Newtonsoft.Json.JsonSerializationException: Unable to find a constructor to use for type EPiServer.Shell.UI.Messaging.Internal.PushMessage. A class should either have a default constructor, one constructor with arguments or a constructor marked with the JsonConstructor attribute. Path 'Topic', line 1, position 9.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateNewObject(JsonReader reader, JsonObjectContract objectContract, JsonProperty containerMember, JsonProperty containerProperty, String id, Boolean& createdFromNonDefaultCreator)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at EPiServer.Shell.UI.Messaging.Internal.DefaultPushMessenger.EventRaised(Object sender, EventNotificationEventArgs e)
at EPiServer.Events.Clients.Event.<>c__DisplayClass38_0.b__0()
at System.Threading.Tasks.Task.Execute()
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.Wait()
at EPiServer.Events.Clients.Event.Raise(Guid raiserId, Object param, EventRaiseOption raiseOption)
at EPiServer.Events.Clients.Event.RemoteEventReceived(Object sender, EventReceivedEventArgs e)
at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
at EPiServer.Events.Providers.EventProviderService.OnEventReceived(Object sender, EventReceivedEventArgs e)
--- End of inner exception stack trace ---
at EPiServer.Events.Providers.EventProviderService.OnEventReceived(Object sender, EventReceivedEventArgs e)
at EPiServer.Events.Providers.EventProviderService.Provider_OnMessageReceived(Object sender, EventMessageEventArgs e)
at EPiServer.Events.Providers.EventProvider.OnMessageReceived(EventMessageEventArgs args, Boolean suppressExceptions)
---> (Inner Exception #0) System.AggregateException: One or more errors occurred. ---> Newtonsoft.Json.JsonSerializationException: Unable to find a constructor to use for type EPiServer.Shell.UI.Messaging.Internal.PushMessage. A class should either have a default constructor, one constructor with arguments or a constructor marked with the JsonConstructor attribute. Path 'Topic', line 1, position 9.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateNewObject(JsonReader reader, JsonObjectContract objectContract, JsonProperty containerMember, JsonProperty containerProperty, String id, Boolean& createdFromNonDefaultCreator)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at EPiServer.Shell.UI.Messaging.Internal.DefaultPushMessenger.EventRaised(Object sender, EventNotificationEventArgs e)
at EPiServer.Events.Clients.Event.<>c__DisplayClass38_0.b__0()
at System.Threading.Tasks.Task.Execute()
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.Wait()
at EPiServer.Events.Clients.Event.Raise(Guid raiserId, Object param, EventRaiseOption raiseOption)
at EPiServer.Events.Clients.Event.RemoteEventReceived(Object sender, EventReceivedEventArgs e)
at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
at EPiServer.Events.Providers.EventProviderService.OnEventReceived(Object sender, EventReceivedEventArgs e)
---> (Inner Exception #0) Newtonsoft.Json.JsonSerializationException: Unable to find a constructor to use for type EPiServer.Shell.UI.Messaging.Internal.PushMessage. A class should either have a default constructor, one constructor with arguments or a constructor marked with the JsonConstructor attribute. Path 'Topic', line 1, position 9.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateNewObject(JsonReader reader, JsonObjectContract objectContract, JsonProperty containerMember, JsonProperty containerProperty, String id, Boolean& createdFromNonDefaultCreator)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at EPiServer.Shell.UI.Messaging.Internal.DefaultPushMessenger.EventRaised(Object sender, EventNotificationEventArgs e)
at EPiServer.Events.Clients.Event.<>c__DisplayClass38_0.b__0()
at System.Threading.Tasks.Task.Execute()<---><--->--->--->>>>--->--->>>>
Remote cache invalidation seems to work despite the error, so no panic :) Downside is lots of errors in logs, and it also seems that remote changes are not updated via WebSockets.
Hi
After upgrading to the latest nugets I noticed lots of errors in the server logs. The errors occur only in multi-server environment: when user modifies content on SERVER1, the error is logged on SERVER2.
Nugets:
EPiServer.CMS.Core 9.9.0
EPiServer.CMS.UI 9.5.0
EPiServer.CMS.UI.Core 9.5.0
The exception follows:
Remote cache invalidation seems to work despite the error, so no panic :) Downside is lots of errors in logs, and it also seems that remote changes are not updated via WebSockets.