Protobuf反序列化
Protobuf Deserialisation
我们使用 protobuf 已经有几年了,它非常适合我们所做的事情。
但是,最近我们遇到了一些反序列化问题。
以前反序列化是串行完成的,现在为了加快这个过程,我们使用了系统可以提供的所有内核。
场景:
- 我们正在生成报告,其中包括 100 张图片。
- 每张图片都是一个小部件,每个小部件都有自己的数据源。
- 我们有不止一个小部件访问相同的数据(存储在 protobuf 中)。
- 附件是一张截图,其中突出显示了 2 个小部件开始反序列化。
- 其中第一个成功反序列化。
- 第二个反序列化失败,并附有以下错误消息
注意:第一次和第二次反序列化相隔几毫秒。
错误:
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
我们认为这不是多线程问题!,因为我们尝试同步反序列化过程。
但是,在反序列化之前添加 1000 毫秒的睡眠时,大部分时间都有效!
对此有任何想法,请告诉我。
这最终不是 protobuf 错误。我们的应用程序没有充分同步。
我们使用 protobuf 已经有几年了,它非常适合我们所做的事情。
但是,最近我们遇到了一些反序列化问题。
以前反序列化是串行完成的,现在为了加快这个过程,我们使用了系统可以提供的所有内核。
场景:
- 我们正在生成报告,其中包括 100 张图片。
- 每张图片都是一个小部件,每个小部件都有自己的数据源。
- 我们有不止一个小部件访问相同的数据(存储在 protobuf 中)。
- 附件是一张截图,其中突出显示了 2 个小部件开始反序列化。
- 其中第一个成功反序列化。
- 第二个反序列化失败,并附有以下错误消息
注意:第一次和第二次反序列化相隔几毫秒。
错误:
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
我们认为这不是多线程问题!,因为我们尝试同步反序列化过程。
但是,在反序列化之前添加 1000 毫秒的睡眠时,大部分时间都有效!
对此有任何想法,请告诉我。
这最终不是 protobuf 错误。我们的应用程序没有充分同步。