[
https://issues.apache.org/jira/browse/AVRO-4265?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18084450#comment-18084450
]
Oscar Westra van Holthe - Kind commented on AVRO-4265:
------------------------------------------------------
This is caused by a (now) mistimed check on the default value.
Originally, (JSON) schemas could not contain forward references. This means
that default values can be checked immediately.
Now, the parser does support forward references. But although it resolves
schemas at the end, is does check default values immediately. This causes
problems with schemas like these two above, depending on the order they're
parsed.
> Default values fail on forward references
> -----------------------------------------
>
> Key: AVRO-4265
> URL: https://issues.apache.org/jira/browse/AVRO-4265
> Project: Apache Avro
> Issue Type: Bug
> Components: java
> Affects Versions: 1.12.0, 1.12.1
> Reporter: Oscar Westra van Holthe - Kind
> Priority: Major
>
> This issue was reported in a [GitHub
> discussion|https://github.com/apache/avro/pull/3614#discussion_r3325140758]
> by [ebAtUelzener|https://github.com/ebAtUelzener]:
> You can observe that the Gradle task fails with a cause inside the validation
> Schema.validateDefault:
> {noformat}
> org.gradle.api.tasks.TaskExecutionException: Execution failed for task
> ':avroGenerateJavaClasses'
> <gradle stack>
> Caused by: org.apache.avro.AvroTypeException: Invalid default for field
> myEnum: "NONE" not a
> {"type":"record","name":"UnresolvedSchema_1","namespace":"org.apache.avro.compiler","doc":"unresolved
> schema","fields":[],"org.apache.avro.idl.unresolved.name":"some.MyEnum"}
> at org.apache.avro.Schema.validateDefault(Schema.java:1720)
> at org.apache.avro.Schema$Field.<init>(Schema.java:579)
> at org.apache.avro.Schema.parseField(Schema.java:1904)
> at org.apache.avro.Schema.parseRecord(Schema.java:1872)
> at org.apache.avro.Schema.parse(Schema.java:1836)
> at org.apache.avro.Schema$Parser.parse(Schema.java:1539)
> at org.apache.avro.Schema$Parser.parseInternal(Schema.java:1524)
> at org.apache.avro.JsonSchemaParser.parse(JsonSchemaParser.java:86)
> at org.apache.avro.JsonSchemaParser.parse(JsonSchemaParser.java:77)
> at org.apache.avro.SchemaParser.parse(SchemaParser.java:245)
> at org.apache.avro.SchemaParser.parse(SchemaParser.java:137)
> at org.apache.avro.SchemaParser.parse(SchemaParser.java:103)
> at org.apache.avro.SchemaParser.parse(SchemaParser.java:88)
> at
> eu.eventloopsoftware.avro.gradle.plugin.tasks.CompileAvroSchemaTask.compileSchemas(CompileAvroSchemaTask.kt:65)
> at
> eu.eventloopsoftware.avro.gradle.plugin.tasks.CompileAvroSchemaTask.compileSchema(CompileAvroSchemaTask.kt:42)
> {noformat}
> This can be reproduced (somewhat, depends on order they are sent to the
> parser) by having two files, an enum and a record like so:
> Enum schema:
> {code:json}
> {
> "type": "enum",
> "name": "MyEnum",
> "namespace": "some",
> "symbols": [
> "SOME"
> "NONE"
> ]
> }
> {code}
> Record schema:
> {code:json}
> {
> "type": "record",
> "name": "MyRecord",
> "namespace": "some",
> "fields": [
> {
> "name": "myEnum",
> "type": "MyEnum",
> "default": "NONE"
> }
> ]
> }
> {code}
> Question is, is this a bug inside the {{avro-compiler}} package rather than
> an issue here and if so should the plugin accommodate for this bug in the
> meantime or not?
--
This message was sent by Atlassian Jira
(v8.20.10#820010)