Raphael Rösch created AVRO-4027:
-----------------------------------

             Summary: IdlReader in Avro 1.12.0 fails with NPE on complex types 
with default values
                 Key: AVRO-4027
                 URL: https://issues.apache.org/jira/browse/AVRO-4027
             Project: Apache Avro
          Issue Type: Bug
          Components: java
    Affects Versions: 1.12.0
            Reporter: Raphael Rösch


Given this avdl (TestProtocol.avdl):
{noformat}
protocol TestProtocol {
    record Test {
        map<string> myMap = {};
    }
}
{noformat}

With Avro 1.12.0 'IdlReader' fails with a NullPointerException:
{code:bash}
$ java -jar avro-tools-1.12.0.jar idl ./TestProtocol.avdl
Exception in thread "main" org.apache.avro.SchemaParseException: 
java.lang.NullPointerException: Cannot invoke 
"org.antlr.v4.runtime.Token.getText()" because "stringToken" is null
        at org.apache.avro.idl.IdlReader.parse(IdlReader.java:224)
        at org.apache.avro.idl.IdlReader.parse(IdlReader.java:187)
        at org.apache.avro.idl.IdlReader.parse(IdlReader.java:172)
        at org.apache.avro.tool.IdlTool.run(IdlTool.java:70)
        at org.apache.avro.tool.Main.run(Main.java:67)
        at org.apache.avro.tool.Main.main(Main.java:56)
Caused by: java.lang.NullPointerException: Cannot invoke 
"org.antlr.v4.runtime.Token.getText()" because "stringToken" is null
        at 
org.apache.avro.idl.IdlReader$IdlParserListener.getString(IdlReader.java:975)
        at 
org.apache.avro.idl.IdlReader$IdlParserListener.exitJsonPair(IdlReader.java:926)
        at 
org.apache.avro.idl.IdlParser$JsonPairContext.exitRule(IdlParser.java:2558)
        at org.antlr.v4.runtime.Parser.triggerExitRuleEvent(Parser.java:410)
        at org.antlr.v4.runtime.Parser.exitRule(Parser.java:642)
        at org.apache.avro.idl.IdlParser.idlFile(IdlParser.java:289)
        at org.apache.avro.idl.IdlReader.parse(IdlReader.java:220)
        ... 5 more
{code}

With Avro 1.11.3
{code:bash}
$ java -jar avro-tools-1.11.3.jar idl ./TestProtocol.avdl
{
  "protocol" : "TestProtocol",
  "types" : [ {
    "type" : "record",
    "name" : "Test",
    "fields" : [ {
      "name" : "myMap",
      "type" : {
        "type" : "map",
        "values" : "string"
      },
      "default" : { }
    } ]
  } ],
  "messages" : { }
}
{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to