[ https://issues.apache.org/jira/browse/AVRO-1883?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16216957#comment-16216957 ]
Nandor Kollar commented on AVRO-1883: ------------------------------------- [~busbey] which test did it failed? I switched to bracnh-1.7 Git branch, cherry picked 5acae5e10ee5d9d7d98b208e29a930f1e66f40ae, resolved the conflict (on a test class, which was not a Trevni test) then executed the tests with {{mvn clean verify}} on top level Avro project, and everything was green, no failure. [~sacharya] I think it would be nice if this fix would be included in 1.7.8 release, since this is a bugfix, and there was a similar problem (AVRO-1815) which was relate to 1.7.7 release. > Schema validator cannot find broken backwards compatibility in Union type > elements > ---------------------------------------------------------------------------------- > > Key: AVRO-1883 > URL: https://issues.apache.org/jira/browse/AVRO-1883 > Project: Avro > Issue Type: Bug > Affects Versions: 1.8.1 > Reporter: Yibing Shi > Assignee: Yibing Shi > Priority: Critical > Fix For: 1.9.0, 1.8.2 > > Attachments: AVRO-1883.1.patch > > > Consider below 2 schemas: > *Schema 1*: > {noformat} > [ > { > "type": "record", > "name": "rec1", > "fields": [ > { > "name": "age", > "type": "long" > } > ] > }, > { > "type": "record", > "name": "rec2", > "fields": [ > { > "name": "username", > "type": "string" > } > ] > } > ] > {noformat} > *Schema 2*: > {noformat} > [ > { > "type": "record", > "name": "rec1", > "fields": [ > { > "name": "age", > "type": "long" > }, > { > "name": "address", > "type": "string" > } > ] > }, > { > "type": "record", > "name": "rec2", > "fields": [ > { > "name": "username", > "type": "string" > } > ] > } > ] > {noformat} > The {{rec1}} field in these 2 unions are not compatible, because the > {{address}} field of {{rec1}} in the second one is not nullable. However, if > we check them with validate like below, validator doesn't return any error: > {code} > final SchemaValidator backwardValidator = new > SchemaValidatorBuilder().canReadStrategy().validateLatest(); > final Schema schema1 = new Schema.Parser().parse(schema1Str); > final Schema schema2 = new Schema.Parser().parse(schema2Str); > backwardValidator.validate(schema2, Arrays.asList(schema1)); > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)