2015-09-06 103 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錯誤。我們的應用程序沒有充分同步。