You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Radai Rosenblatt (Jira)" <ji...@apache.org> on 2023/01/07 20:40:00 UTC
[jira] [Created] (AVRO-3703) avro 1.11.1 stopped validating namespace changes on deserialization
Radai Rosenblatt created AVRO-3703:
--------------------------------------
Summary: avro 1.11.1 stopped validating namespace changes on deserialization
Key: AVRO-3703
URL: https://issues.apache.org/jira/browse/AVRO-3703
Project: Apache Avro
Issue Type: Bug
Components: java
Affects Versions: 1.11.1
Reporter: Radai Rosenblatt
the following test passes on 1.11.0 but fails on 1.11.1:
{code}
@Test(expected = AvroTypeException.class)
public void testFullnameValidation() throws Exception {
String avsc1 =
"{\n"
+ " \"type\": \"record\",\n"
+ " \"name\": \"RecordSimpleName\",\n"
+ " \"namespace\": \"some.namespace\",\n"
+ " \"fields\": [\n"
+ " {\n"
+ " \"name\" : \"enumField\",\n"
+ " \"type\" : {\n"
+ " \"type\" : \"enum\",\n"
+ " \"name\" : \"InnerEnum\",\n"
+ " \"symbols\" : [ \"THE\", \"SPEC\", \"IS\", \"A\", \"LIE\" ],\n"
+ " \"doc\" : \"inherits no namespace so is InnerEnum\"\n"
+ " }\n"
+ " }\n"
+ " ]\n"
+ "}\n";
String avsc2 = avsc1.replace("some.namespace", "something.else");
Schema schema1 = Schema.parse(avsc1);
Schema schema2 = Schema.parse(avsc2);
Assert.assertEquals(schema1.getName(), schema2.getName());
Assert.assertNotEquals(schema1.getNamespace(), schema2.getNamespace());
Assert.assertNotEquals(schema1.getFullName(), schema2.getFullName());
GenericDatumReader<IndexedRecord> reader = new GenericDatumReader<>(schema1, schema2);
JsonDecoder decoder = DecoderFactory.get().jsonDecoder(schema1, "{\"enumField\": \"LIE\"}");
IndexedRecord deserialized = reader.read(null, decoder);
Assert.fail("deserialization should have failed over namespace mismatch");
}
{code}
looks like avro 1.11.1 disregards namespace/fullnames during deserialization? (this was the behaviour under avro 1.4)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)