Issue with schema evolution when adding an enum
bozhidarG opened this issue · 2 comments
Hello i've stumbled upon an issue in the latest version v10.2.0
, i've also managed to reproduce it with some simple schemas.
We have this issue only when we are serializing with one schema and deserializing with a backward compatible one.
The schema used to serialize the msg is as follows
{
"type": "record",
"name": "TestEnumSchemaEvolution",
"namespace": "test.schema.evolution",
"fields": [
{
"name": "id",
"type": "string"
},
{
"name": "added_enum",
"type":
[
"null",
{
"type": "enum",
"name": "SchemaAddedEnum",
"symbols":
[
"enum1",
"enum2",
"unknown"
],
"default": "unknown"
}
],
"default": null
}
]
}
The schema used to deserialize :
{
"type": "record",
"name": "TestEnumSchemaEvolution",
"namespace": "test.schema.evolution",
"fields": [
{
"name": "id",
"type": "string"
}
]
}
For both schemas i've used the cli tool to generate static code and use the structs. v10
of the tool.
The simple test code is this one:
enumPayload := writer_simple.NewTestEnumSchemaEvolution()
enumPayload.Id = "test-id"
enumPayload.Added_enum = writer_simple.NewUnionNullSchemaAddedEnum()
enumPayload.Added_enum.SchemaAddedEnum = writer_simple.SchemaAddedEnumEnum2
enumPayload.Added_enum.UnionType = writer_simple.UnionNullSchemaAddedEnumTypeEnumSchemaAddedEnum
avroPayload := bytes.Buffer{}
err := enumPayload.Serialize(&avroPayload)
fmt.Println(err)
onlyIdPayload := reader_simple.NewTestEnumSchemaEvolution()
program, err := compiler.CompileSchemaBytes([]byte(enumPayload.Schema()), []byte(onlyIdPayload.Schema()))
fmt.Println(err)
buf := bytes.NewBuffer(avroPayload.Bytes())
errn := vm.Eval(buf, program, &onlyIdPayload)
fmt.Println(errn)
jbytes, _ := json.Marshal(&onlyIdPayload)
fmt.Println(string(jbytes))
The error i get is on the vm.Eval
method and is as follows:
Runtime error: Unexpected value for enum, frame: {false 0 1 0 0 [] true}, pc: 0xc0000222d8
I've tested the same thing using v9.2.0
and there were no issues there.
Also might be something i'm doing wrong, would be very grateful if you can help with some info on this one. I'll be using v9
for now.
Hi @bozhidarG! Thanks for such a clear error report. I was able to fix this issue in the most recent release (10.2.1). Let me know if it works for you.
Thanks, all works as expected now.