Skip to content

Commit 9a5318e

Browse files
Cross-build java-extensions-avro with Avro 1.12 (#38109)
* Add Avro version 1.12.0 to build.gradle * Update AvroUtilsTest.java * Update AvroUtilsTest.java * Updating to Avro 1.12.1 * Revert "Updating to Avro 1.12.1" This reverts commit efdc40a. * Update AvroUtilsTest.java * Update AvroUtilsTest.java * retrigger CI * retrigger CI * Updates * Update build.gradle * Revert "Update build.gradle" This reverts commit 1721dcd. * Revert "Updates" This reverts commit 32df001. * Update AvroUtilsTest.java * Update sdks/java/extensions/avro/src/test/java/org/apache/beam/sdk/extensions/avro/schemas/utils/AvroUtilsTest.java Co-authored-by: Claire McGinty <claire.d.mcginty@gmail.com> --------- Co-authored-by: Claire McGinty <claire.d.mcginty@gmail.com>
1 parent 62fd95d commit 9a5318e

2 files changed

Lines changed: 13 additions & 1 deletion

File tree

sdks/java/extensions/avro/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ def avroVersions = [
4040
'182' : "1.8.2",
4141
'192' : "1.9.2",
4242
'1102': "1.10.2",
43+
'1120': "1.12.0",
4344
]
4445

4546
avroVersions.each { k, v ->

sdks/java/extensions/avro/src/test/java/org/apache/beam/sdk/extensions/avro/schemas/utils/AvroUtilsTest.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import static org.junit.Assert.assertFalse;
2222
import static org.junit.Assert.assertTrue;
2323

24+
import com.fasterxml.jackson.databind.ObjectMapper;
2425
import com.pholser.junit.quickcheck.From;
2526
import com.pholser.junit.quickcheck.Property;
2627
import com.pholser.junit.quickcheck.runner.JUnitQuickcheck;
@@ -284,10 +285,20 @@ public void avroToBeamRoundTrip(
284285
Iterable iterable = randomData(avroSchema, 10);
285286
List<GenericRecord> records = Lists.newArrayList((Iterable<GenericRecord>) iterable);
286287

288+
// AVRO-4139: GenericRecord.equals() throws "Can't compare maps!" for records with
289+
// nested map types on Avro 1.12.0. Fall back to JSON tree comparison on that version
290+
// only; keep direct equals for other versions.
291+
boolean useJsonCompare = "1.12.0".equals(VERSION_AVRO);
292+
ObjectMapper mapper = useJsonCompare ? new ObjectMapper() : null;
293+
287294
for (GenericRecord record : records) {
288295
Row row = AvroUtils.toBeamRowStrict(record, schema);
289296
GenericRecord out = AvroUtils.toGenericRecord(row, avroSchema);
290-
assertEquals(record, out);
297+
if (useJsonCompare) {
298+
assertEquals(mapper.readTree(record.toString()), mapper.readTree(out.toString()));
299+
} else {
300+
assertEquals(record, out);
301+
}
291302
}
292303
}
293304

0 commit comments

Comments
 (0)