代码之家  ›  专栏  ›  技术社区  ›  ultra909

ChangeStreamDocument.ClusterTime总是引发FormatException

  •  1
  • ultra909  · 技术社区  · 7 年前

    我在Windows7上使用MongoDB驱动程序2.7.0英寸 net461/netstandard2.0 针对配置了单个副本集的community server 4.0.2的本地安装的dll。

    我正在监听一个集合上的更改流,但是当我尝试访问 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 回复  |  直到 7 年前
        1
  •  0
  •   ultra909    7 年前

    MongoDB已经确认这是一个bug。