我们现在使用protobuf几年了,它对我们的工作非常有用。Protobuf反序列化
但是,最近我们遇到了很少的反序列化问题。
以前反序列化是连续完成的,现在可以加快我们使用所有核心系统可以提供的过程。
场景:
- 我们正在生成报告,该报告包括100幅图像。
- 每个图像都是一个小部件,每个小部件都有自己的数据源。
- 我们有更多的一个小部件访问相同的数据(存储在protobuf中)。
- 附加是一个截图,其中突出显示了2个小部件开始反序列化。
- 其中1位成功反序列化。
- 第二届一个失败deserialisation下面附加的错误消息
注:第1和第2 deserialisation发生几毫秒的时间间隔。
错误:
Context: 1 errors generating widgets. AnalysisTaskGlobalID: d549f367-f42f-45fa-b230-f2839a6fefe6 Error: Exception of type 'ProtoBuf.ProtoException' was thrown. Stack: at ProtoBuf.ProtoReader.StartSubItem(ProtoReader reader) in c:\Dev\protobuf-net\protobuf-net\ProtoReader.cs:line 599 at ProtoBuf.ProtoReader.ReadTypedObject(Object value, Int32 key, ProtoReader reader, Type type) in c:\Dev\protobuf-net\protobuf-net\ProtoReader.cs:line 531 at proto_2(Object , ProtoReader) at ProtoBuf.Meta.TypeModel.Deserialize(Stream source, Object value, Type type, SerializationContext context) in c:\Dev\protobuf-net\protobuf-net\Meta\TypeModel.cs:line 506 at ProtoBuf.Serializer.Deserialize[T](Stream source) in c:\Dev\protobuf-net\protobuf-net\Serializer.cs:line 69
我们不认为它是一个多线程问题!因为我们试图同步反序列化过程。
但是,在反序列化之前添加1000ms的睡眠时,大部分时间都可以使用!
对此的任何想法,请让我知道。
我们正在使用protobuf的第2版 –
我们正在反序列化的类型有113000字节。看起来像对象的大小和使用多线程是造成这个问题。有没有protobuf提示,我应该使用? –
如果您将堆栈跟踪格式化为更易于阅读,那么可以更容易理解您的问题。 – Alex