Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.6.3
-
None
-
None
Description
I have an avro record that can have an array of children records of the same type. If this structure gets to be too deep then I continually get an ArrayOutOfBoundsException in ParsingEncoder when trying to use a json encoder. This works fine when using a binary encoder. My schema looks something like this:
{
"name" : "MyRecord",
"type" : "record",
"fields" : [
,
{
"name" : "childRecords",
"type" : [ "null",
]
}
]
}
The code I'm using to capture a JSON string for debugging looks like this:
ByteArrayOutputStream os = null;
try
catch (IOException e)
{ return null; } finally {
if (os != null) {
try
catch (IOException e) {
}
}
}
The error I get looks like this:
java.lang.ArrayIndexOutOfBoundsException: 10
at org.apache.avro.io.ParsingEncoder.push(ParsingEncoder.java:55)
at org.apache.avro.io.JsonEncoder.writeArrayStart(JsonEncoder.java:231)
at org.apache.avro.generic.GenericDatumWriter.writeArray(GenericDatumWriter.java:125)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:67)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:72)
at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:105)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:65)
at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:105)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:65)
at org.apache.avro.generic.GenericDatumWriter.writeArray(GenericDatumWriter.java:129)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:67)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:72)
at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:105)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:65)
at org.apache.avro.generic.GenericDatumWriter.writeArray(GenericDatumWriter.java:129)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:67)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:72)
at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:105)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:65)
at org.apache.avro.generic.GenericDatumWriter.writeArray(GenericDatumWriter.java:129)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:67)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:72)
at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:105)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:65)
at org.apache.avro.generic.GenericDatumWriter.writeArray(GenericDatumWriter.java:129)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:67)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:72)
at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:105)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:65)
at org.apache.avro.generic.GenericDatumWriter.writeArray(GenericDatumWriter.java:129)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:67)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:72)
at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:105)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:65)
at org.apache.avro.generic.GenericDatumWriter.writeArray(GenericDatumWriter.java:129)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:67)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:72)
at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:105)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:65)
at org.apache.avro.generic.GenericDatumWriter.writeArray(GenericDatumWriter.java:129)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:67)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:72)
at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:105)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:65)
at org.apache.avro.generic.GenericDatumWriter.writeArray(GenericDatumWriter.java:129)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:67)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:72)
at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:105)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:65)
at org.apache.avro.generic.GenericDatumWriter.writeArray(GenericDatumWriter.java:129)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:67)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:72)
at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:105)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:65)
at org.apache.avro.generic.GenericDatumWriter.writeArray(GenericDatumWriter.java:129)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:67)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:72)
at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:105)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:65)
at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:57)
<my line calling datumWriter.write>