Oscar Westra van Holthe - Kind created AVRO-4265:
----------------------------------------------------
Summary: 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.1, 1.12.0
Reporter: Oscar Westra van Holthe - Kind
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)