ChangeStreamDocument.ClusterTime всегда генерирует исключение FormatException - PullRequest
0 голосов
/ 06 сентября 2018

Я на Windows 7 использую MongoDB.Driver 2.7.0 в net461/netstandard2.0 dll для локальной установки сервера сообщества 4.0.2 с одним настроенным набором реплик.

Я слушаю поток изменений в коллекции, но когда я просто пытаюсь получить доступ к свойству ClusterTime полученного ChangeStreamDocument, возникает исключение:

    private static DateTime? GetTimeStamp(ChangeStreamDocument<T> csd)
    {
        try
        {
            var clusterTime = csd.ClusterTime; // BOOM
            return clusterTime.ToNullableUniversalTime();
        }
        catch
        {
            return null;
        }
    }

  System.FormatException
  HResult=0x80131537
  Message=Cannot deserialize a 'BsonDocument' from BsonType 'Timestamp'.
  Source=MongoDB.Bson
  StackTrace:
   at MongoDB.Bson.Serialization.Serializers.SerializerBase`1.EnsureBsonTypeEquals(IBsonReader reader, BsonType bsonType)
   at MongoDB.Bson.Serialization.Serializers.BsonValueSerializerBase`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.IBsonSerializerExtensions.Deserialize(IBsonSerializer serializer, BsonDeserializationContext context)
   at MongoDB.Bson.Serialization.BsonSerializationInfo.DeserializeValue(BsonValue value)
   at MongoDB.Bson.Serialization.BsonDocumentBackedClass.GetValue[T](String memberName, T defaultValue)
   at Foo.GetTimeStamp(ChangeStreamDocument`1 csd) in Foo.cs:line 28

Глядя на вспомогательный документ, clusterTime действительно Timestamp:

{
  "_id": {
    "_data": "825B9102E30000000129295A1004BFB7B7E0A5F648929251FC06F06640A2463C5F6964003C62366332623361352D313965352D343162392D386336322D396565313130393337666634000004"
  },
  "operationType": "insert",
  "clusterTime": Timestamp(1536230115, 1),
  // ... omitted
}

Это ошибка / известная проблема или проблема с моей настройкой?

1 Ответ

0 голосов
/ 21 сентября 2018

Это было подтверждено как ошибка MongoDB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...