2015-09-06 61 views
1

我们现在使用protobuf几年了,它对我们的工作非常有用。Protobuf反序列化

但是,最近我们遇到了很少的反序列化问题。

以前反序列化是连续完成的,现在可以加快我们使用所有核心系统可以提供的过程。

场景:

  1. 我们正在生成报告,该报告包括100幅图像。
  2. 每个图像都是一个小部件,每个小部件都有自己的数据源。
  3. 我们有更多的一个小部件访问相同的数据(存储在protobuf中)。
  4. 附加是一个截图,其中突出显示了2个小部件开始反序列化。
  5. 其中1位成功反序列化。
  6. 第二届一个失败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的睡眠时,大部分时间都可以使用!

对此的任何想法,请让我知道。

+0

我们正在使用protobuf的第2版 –

+0

我们正在反序列化的类型有113000字节。看起来像对象的大小和使用多线程是造成这个问题。有没有protobuf提示,我应该使用? –

+0

如果您将堆栈跟踪格式化为更易于阅读,那么可以更容易理解您的问题。 – Alex

回答

0

这在最后不是protobuf错误。我们的应用程序没有充分同步。