[ https://issues.apache.org/jira/browse/THRIFT-4024?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15815139#comment-15815139 ]
Jens Geyer edited comment on THRIFT-4024 at 1/10/17 2:48 PM: ------------------------------------------------------------- Under which circumstances can we run into a unknown type? The Thrift type system is well-defined, there should not be an unknown type at all. Can we have a test case? {quote} you may end up waiting for a random period of time until deserialization is completed (734707176 iterations of skipping in my case). {quote} What does random mean? Is that related to the number of items or why does it take 734 mio iterations? Where does that number come from? Please explain. was (Author: jensg): Under which circumstances can we run into a unknown type? The Thrift type system is well-defined, there should not be an unknown type at all. Can we have a test case? > C# deserialization takes unnecessary time on list with unknown type of > elements > ------------------------------------------------------------------------------- > > Key: THRIFT-4024 > URL: https://issues.apache.org/jira/browse/THRIFT-4024 > Project: Thrift > Issue Type: Bug > Components: C# - Library > Affects Versions: 0.10.0 > Reporter: Michael Antipin > Assignee: Jens Geyer > > I'm using TBinaryProtocol and a simple transport that reads from a given byte > array. > C# library contains the following code in TProtocolUtil.Skip(TProtocol prot, > TType type): > {code} > case TType.List: > TList list = prot.ReadListBegin(); > for (int i = 0; i < list.Count; i++) { > Skip(prot, list.ElementType); > } > prot.ReadListEnd(); > break; > {code} > The type of elements is detected in ReadListBegin(), and, as Skip() does > nothing for unknown types, the position in the binary remains the same until > the for loop completes. > So, when you try to deserialize invalid data, and a field type happens to be > detected as TType.List, you may end up waiting for a random period of time > until deserialization is completed (734707176 iterations of skipping in my > case). > I suggest throwing an exception immediately when list elements type is > unknown. May be, it would be good to have a setting like *FailOnUnknownType*, > so that Skip() will throw instead of ignoring. -- This message was sent by Atlassian JIRA (v6.3.4#6332)