If a commit cannot be deserialized, Polling starts sending a high amount of Errors in the log, in the meanwhile the user of the poller has no clue that something wrong is happened and the poller is stuck.
We need
[ ] Logging each X minutes, it has no sense to log an exception for each polling tentative
[ ] Creating a property in the poller that states that the poller is in Error state. This will allow consumer program to react or setting some alert.
Here is text of exception
Error during polling client System.FormatException: An error occurred while deserializing the Body property of class NEventStore.EventMessage: Element 'XXXXXXX' does not match any field or property of class DMS.Shared.Model.Container.Events.ContainerCreated. ---> System.FormatException: Element 'XXXXXXX' does not match any field or property of class DMS.Shared.Model.Container.Events.ContainerCreated.
at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.DeserializeClass(BsonDeserializationContext context)
at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.Serializers.SerializerBase`1.MongoDB.Bson.Serialization.IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.Serializers.ObjectSerializer.DeserializeDiscriminatedValue(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.Serializers.ObjectSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.Serializers.SerializerBase`1.MongoDB.Bson.Serialization.IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.IBsonSerializerExtensions.Deserialize(IBsonSerializer serializer, BsonDeserializationContext context)
at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.DeserializeMemberValue(BsonDeserializationContext context, BsonMemberMap memberMap)
--- End of inner exception stack trace ---
at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.DeserializeMemberValue(BsonDeserializationContext context, BsonMemberMap memberMap)
at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.DeserializeClass(BsonDeserializationContext context)
at MongoDB.Bson.Serialization.BsonClassMapSerializer`1.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.IBsonSerializerExtensions.Deserialize[TValue](IBsonSerializer`1 serializer, BsonDeserializationContext context)
at MongoDB.Bson.Serialization.BsonSerializer.Deserialize[TNominalType](BsonDocument document, Action`1 configurator)
at NEventStore.Persistence.MongoDB.ExtensionMethods.<>c__DisplayClass13.<ToCommit>b__12(BsonValue e) in c:\agents\nes\work\623237454e7de2b5\src\NEventStore.Persistence.MongoDB\ExtensionMethods.cs:line 149
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at NEventStore.Persistence.Commit..ctor(String bucketId, String streamId, Int32 streamRevision, Guid commitId, Int32 commitSequence, DateTime commitStamp, Int64 checkpointToken, IDictionary`2 headers, IEnumerable`1 events)
at NEventStore.Persistence.MongoDB.ExtensionMethods.ToCommit(BsonDocument doc, IDocumentSerializer serializer) in c:\agents\nes\work\623237454e7de2b5\src\NEventStore.Persistence.MongoDB\ExtensionMethods.cs:line 141
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at NEventStore.Persistence.PipelineHooksAwarePersistanceDecorator.<ExecuteHooks>d__3.MoveNext()
at NEventStore.Client.PollingClient2.InnerPoll()
If a commit cannot be deserialized, Polling starts sending a high amount of Errors in the log, in the meanwhile the user of the poller has no clue that something wrong is happened and the poller is stuck.
We need
Here is text of exception