Elliot West created AVRO-1963:
---------------------------------
Summary: Redefined records should fail fast
Key: AVRO-1963
URL: https://issues.apache.org/jira/browse/AVRO-1963
Project: Avro
Issue Type: Bug
Affects Versions: 1.8.1, 1.7.7
Reporter: Elliot West
h2. Overview
It is currently possible to build an invalid {{Schema}} instance using the
{{SchemaBuilder}}, without any error being thrown. The schema in question is
invalid because of redefined record types. These are not picked up by the
{{SchemaBuilder}}. Failure eventually occurs when calling the
{{Schema.toString()}} method.
I suggest that failure should occur much earlier such as at the point of
introduction of the redeclared record name in the case of {{SchemaBuilder}}.
This would make it easier for users to better determine the point of origin of
their schema issues.
Note that there does not appear to be a similar issue with the
{{Schema.parse(String)}} method which fails fast as expected.
h2. Test case
{code:title=Test case}
Schema a = SchemaBuilder.record("A").fields().optionalInt("y").endRecord();
Schema b =
SchemaBuilder.record("A").fields().optionalString("x").endRecord();
Schema s = SchemaBuilder
.record("S")
.fields()
.name("a")
.type(a)
.noDefault()
.name("b")
.type(b)
.noDefault()
.endRecord();
// Does not fail
s.toString();
// Fails with org.apache.avro.SchemaParseException: Can't redefine: A
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)