Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more

Lots of DefaultPushMessenger log errors in multi-server environment

Vote:
 

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:

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.

#148438
May 12, 2016 23:28
Vote:
 

This is repoted as bug "CMS-3570 Event exception on load balancing enviroment" (bug report is not yet public).

#148531
May 16, 2016 22:28
Vote:
 

+1

I get the same errors in our multi-server environment.

#148672
May 19, 2016 18:25
Vote:
 

Fixed in EPiServer.CMS.UI 9.6.1

#148738
May 22, 2016 23:54
This topic was created over six months ago and has been resolved. If you have a similar question, please create a new topic and refer to this one.
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.