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

             Summary: NoSuchElementException in IdlReader for duplicated Enum 
definition
                 Key: AVRO-4182
                 URL: https://issues.apache.org/jira/browse/AVRO-4182
             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 {

  enum Foo {
    UNKNOWN,
    BAR
  } = UNKNOWN;

  enum Foo {
    UNKNOWN,
    BAZ
  } = UNKNOWN;

}
{noformat}

With Avro 1.12.0 'IdlReader' fails with NoSuchElementException
{noformat}
$ java -jar ./avro-tools-1.12.0.jar idl ./TestProtocol.avdl
Exception in thread "main" org.apache.avro.SchemaParseException: 
java.util.NoSuchElementException
        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.util.NoSuchElementException
        at java.base/java.util.ArrayDeque.removeFirst(ArrayDeque.java:360)
        at java.base/java.util.ArrayDeque.pop(ArrayDeque.java:591)
        at 
org.apache.avro.idl.IdlReader$IdlParserListener.exitEnumDeclaration(IdlReader.java:531)
        at 
org.apache.avro.idl.IdlParser$EnumDeclarationContext.exitRule(IdlParser.java:976)
        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
{noformat}

* This does also happen if the Enums are defined in two different Protocols of 
the same namespace.
* Having multiple Enums of the same name should not be allowed. The parse must 
therefore fail, but print a more helpful error message.



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

Reply via email to