Description
Validating a schema with a recursive definition will lead to a stack overflow. When using the following schema definition:
@namespace("avro") protocol Unused { record Node { union { null, Node } value = null; } }
final SchemaValidator backwardValidator = new SchemaValidatorBuilder() .canReadStrategy().validateLatest(); backwardValidator.validate(Node.SCHEMA$, Arrays.asList(Node.SCHEMA$));
It results in a stack trace:
java.lang.StackOverflowError at org.apache.avro.io.parsing.Symbol.hasErrors(Symbol.java:406) at org.apache.avro.io.parsing.Symbol.hasErrors(Symbol.java:392) at org.apache.avro.io.parsing.Symbol.hasErrors(Symbol.java:383) at org.apache.avro.io.parsing.Symbol.hasErrors(Symbol.java:406) at org.apache.avro.io.parsing.Symbol.hasErrors(Symbol.java:392) at org.apache.avro.io.parsing.Symbol.hasErrors(Symbol.java:406) at org.apache.avro.io.parsing.Symbol.hasErrors(Symbol.java:374) at org.apache.avro.io.parsing.Symbol.hasErrors(Symbol.java:406) ...