diff --git a/sdks/java/extensions/avro/build.gradle b/sdks/java/extensions/avro/build.gradle index e3afb5ff52e4..6b24bf693dfb 100644 --- a/sdks/java/extensions/avro/build.gradle +++ b/sdks/java/extensions/avro/build.gradle @@ -40,6 +40,7 @@ def avroVersions = [ '182' : "1.8.2", '192' : "1.9.2", '1102': "1.10.2", + '1120': "1.12.0", ] avroVersions.each { k, v -> diff --git a/sdks/java/extensions/avro/src/test/java/org/apache/beam/sdk/extensions/avro/schemas/utils/AvroUtilsTest.java b/sdks/java/extensions/avro/src/test/java/org/apache/beam/sdk/extensions/avro/schemas/utils/AvroUtilsTest.java index 57da8e77bb1b..9e2be047f010 100644 --- a/sdks/java/extensions/avro/src/test/java/org/apache/beam/sdk/extensions/avro/schemas/utils/AvroUtilsTest.java +++ b/sdks/java/extensions/avro/src/test/java/org/apache/beam/sdk/extensions/avro/schemas/utils/AvroUtilsTest.java @@ -21,6 +21,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import com.fasterxml.jackson.databind.ObjectMapper; import com.pholser.junit.quickcheck.From; import com.pholser.junit.quickcheck.Property; import com.pholser.junit.quickcheck.runner.JUnitQuickcheck; @@ -284,10 +285,14 @@ public void avroToBeamRoundTrip( Iterable iterable = randomData(avroSchema, 10); List records = Lists.newArrayList((Iterable) iterable); + // Use JSON tree comparison to avoid Avro 1.12.0 GenericRecord.equals() throwing + // "Can't compare maps!" for records with nested map types + // (see AVRO-4139) + ObjectMapper mapper = new ObjectMapper(); for (GenericRecord record : records) { Row row = AvroUtils.toBeamRowStrict(record, schema); GenericRecord out = AvroUtils.toGenericRecord(row, avroSchema); - assertEquals(record, out); + assertEquals(mapper.readTree(record.toString()), mapper.readTree(out.toString())); } }