Details
-
Bug
-
Status: Resolved
-
Blocker
-
Resolution: Fixed
-
Impala 3.2.0
-
ghx-label-7
Description
The change for IMPALA-1048 writes TRuntimeProfileNode.node_metadata unconditionally, even when both its fields are unset. This trips up the Java reader code, which expects to find exactly one type of a union to be set. The resulting error looks like this:
Caused by: org.apache.thrift.protocol.TProtocolException: Unrecognized type 0 at org.apache.thrift.protocol.TProtocolUtil.skip(TProtocolUtil.java:144) at org.apache.thrift.protocol.TProtocolUtil.skip(TProtocolUtil.java:60) at com.cloudera.impala.thrift.TRuntimeProfileNodeMetadata.standardSchemeReadValue(TRuntimeProfileNodeMetadata.java:163) at org.apache.thrift.TUnion$TUnionStandardScheme.read(TUnion.java:224) at org.apache.thrift.TUnion$TUnionStandardScheme.read(TUnion.java:213) at org.apache.thrift.TUnion.read(TUnion.java:138) at com.cloudera.impala.thrift.TRuntimeProfileNode$TRuntimeProfileNodeStandardScheme.read(TRuntimeProfileNode.java:1532) at com.cloudera.impala.thrift.TRuntimeProfileNode$TRuntimeProfileNodeStandardScheme.read(TRuntimeProfileNode.java:1341) at com.cloudera.impala.thrift.TRuntimeProfileNode.read(TRuntimeProfileNode.java:1187) at com.cloudera.impala.thrift.TRuntimeProfileTree$TRuntimeProfileTreeStandardScheme.read(TRuntimeProfileTree.java:426) at com.cloudera.impala.thrift.TRuntimeProfileTree$TRuntimeProfileTreeStandardScheme.read(TRuntimeProfileTree.java:405) at com.cloudera.impala.thrift.TRuntimeProfileTree.read(TRuntimeProfileTree.java:339) at org.apache.thrift.TDeserializer.deserialize(TDeserializer.java:81) at org.apache.thrift.TDeserializer.deserialize(TDeserializer.java:67) at com.cloudera.ipe.util.ThriftUtil.read(ThriftUtil.java:65)
(This particular implementation rewrites the Java namespace for compatibility reasons, but the code used the latest master commit's thrift files.)