You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Zoltan Farkas (JIRA)" <ji...@apache.org> on 2017/07/18 20:54:00 UTC
[jira] [Created] (AVRO-2057) JsonDecoder.skipChildren does not skip
map/records correctly
Zoltan Farkas created AVRO-2057:
-----------------------------------
Summary: JsonDecoder.skipChildren does not skip map/records correctly
Key: AVRO-2057
URL: https://issues.apache.org/jira/browse/AVRO-2057
Project: Avro
Issue Type: Bug
Affects Versions: 1.8.2
Reporter: Zoltan Farkas
Priority: Critical
at https://github.com/apache/avro/blob/master/lang/java/avro/src/main/java/org/apache/avro/io/JsonDecoder.java#L585
{code}
@Override
public JsonParser skipChildren() throws IOException {
JsonToken tkn = elements.get(pos).token;
int level = (tkn == JsonToken.START_ARRAY || tkn == JsonToken.END_ARRAY) ? 1 : 0;
while (level > 0) {
switch(elements.get(++pos).token) {
case START_ARRAY:
case START_OBJECT:
level++;
break;
case END_ARRAY:
case END_OBJECT:
level--;
break;
}
}
return this;
}
{code}
should be:
{code}
@Override
public JsonParser skipChildren() throws IOException {
JsonToken tkn = elements.get(pos).token;
int level = (tkn == JsonToken.START_ARRAY || tkn == JsonToken.START_OBJECT) ? 1 : 0;
while (level > 0) {
switch(elements.get(++pos).token) {
case START_ARRAY:
case START_OBJECT:
level++;
break;
case END_ARRAY:
case END_OBJECT:
level--;
break;
}
}
return this;
}
{code}
This results in de-serialization failures when the reader schema does not have fields that are present in the serialized object and the writer schema.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)