From 829340a9410fe4eb1cd9b6a1c1d5f45a1c08cba3 Mon Sep 17 00:00:00 2001 From: SrilakshmiBharadwaj Date: Fri, 28 Feb 2025 14:14:55 -0800 Subject: [PATCH 1/6] Empty commit to trigger build --- .../avroutil1/compatibility/SchemaComparisonConfiguration.java | 1 + 1 file changed, 1 insertion(+) diff --git a/helper/helper-common/src/main/java/com/linkedin/avroutil1/compatibility/SchemaComparisonConfiguration.java b/helper/helper-common/src/main/java/com/linkedin/avroutil1/compatibility/SchemaComparisonConfiguration.java index 677b91734..043bf3a9f 100644 --- a/helper/helper-common/src/main/java/com/linkedin/avroutil1/compatibility/SchemaComparisonConfiguration.java +++ b/helper/helper-common/src/main/java/com/linkedin/avroutil1/compatibility/SchemaComparisonConfiguration.java @@ -11,6 +11,7 @@ public class SchemaComparisonConfiguration { + /** * behaves like avro <= 1.7.2 - non-string props on fields or types are ignored */ From 57fb8bfdd3284cc93f123b2a3ebc563e7862ff07 Mon Sep 17 00:00:00 2001 From: SrilakshmiBharadwaj Date: Fri, 28 Feb 2025 14:17:45 -0800 Subject: [PATCH 2/6] Empty commit --- .../avroutil1/compatibility/SchemaComparisonConfiguration.java | 1 + 1 file changed, 1 insertion(+) diff --git a/helper/helper-common/src/main/java/com/linkedin/avroutil1/compatibility/SchemaComparisonConfiguration.java b/helper/helper-common/src/main/java/com/linkedin/avroutil1/compatibility/SchemaComparisonConfiguration.java index 043bf3a9f..1153c03cf 100644 --- a/helper/helper-common/src/main/java/com/linkedin/avroutil1/compatibility/SchemaComparisonConfiguration.java +++ b/helper/helper-common/src/main/java/com/linkedin/avroutil1/compatibility/SchemaComparisonConfiguration.java @@ -12,6 +12,7 @@ public class SchemaComparisonConfiguration { + /** * behaves like avro <= 1.7.2 - non-string props on fields or types are ignored */ From 232261f368b28f8278a28fe646862ac15ed6b744 Mon Sep 17 00:00:00 2001 From: SrilakshmiBharadwaj Date: Fri, 28 Feb 2025 14:51:39 -0800 Subject: [PATCH 3/6] Empty commit 1 --- .../avroutil1/compatibility/SchemaComparisonConfiguration.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/helper/helper-common/src/main/java/com/linkedin/avroutil1/compatibility/SchemaComparisonConfiguration.java b/helper/helper-common/src/main/java/com/linkedin/avroutil1/compatibility/SchemaComparisonConfiguration.java index 1153c03cf..677b91734 100644 --- a/helper/helper-common/src/main/java/com/linkedin/avroutil1/compatibility/SchemaComparisonConfiguration.java +++ b/helper/helper-common/src/main/java/com/linkedin/avroutil1/compatibility/SchemaComparisonConfiguration.java @@ -11,8 +11,6 @@ public class SchemaComparisonConfiguration { - - /** * behaves like avro <= 1.7.2 - non-string props on fields or types are ignored */ From fd5a897267c85efc010f5071fff7f8cf32fbd4cb Mon Sep 17 00:00:00 2001 From: SrilakshmiBharadwaj Date: Fri, 28 Feb 2025 15:18:34 -0800 Subject: [PATCH 4/6] Compare doc strings in avro schemas --- .../SchemaComparisonConfiguration.java | 17 +++++++++++++---- .../ConfigurableSchemaComparatorTest.java | 3 ++- .../ConfigurableAvroSchemaComparatorTest.java | 2 +- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/helper/helper-common/src/main/java/com/linkedin/avroutil1/compatibility/SchemaComparisonConfiguration.java b/helper/helper-common/src/main/java/com/linkedin/avroutil1/compatibility/SchemaComparisonConfiguration.java index 677b91734..ca963f46c 100644 --- a/helper/helper-common/src/main/java/com/linkedin/avroutil1/compatibility/SchemaComparisonConfiguration.java +++ b/helper/helper-common/src/main/java/com/linkedin/avroutil1/compatibility/SchemaComparisonConfiguration.java @@ -15,16 +15,16 @@ public class SchemaComparisonConfiguration { * behaves like avro <= 1.7.2 - non-string props on fields or types are ignored */ public static final SchemaComparisonConfiguration PRE_1_7_3 = new SchemaComparisonConfiguration( - true, false, false, false, true, false, Collections.emptySet() + true, false, false, false, true, false, false, Collections.emptySet() ); /** * same as {@link #STRICT} but allows int default values to match (round) float default values */ public static final SchemaComparisonConfiguration LOOSE_NUMERICS = new SchemaComparisonConfiguration( - true, true, true, true, true, true, Collections.emptySet() + true, true, true, true, true, true, true, Collections.emptySet() ); public static final SchemaComparisonConfiguration STRICT = new SchemaComparisonConfiguration( - true, true, true, false, true, true, Collections.emptySet() + true, true, true, false, true, true, true, Collections.emptySet() ); private final boolean compareStringJsonProps; @@ -33,6 +33,7 @@ public class SchemaComparisonConfiguration { private final boolean compareIntToFloatDefaults; private final boolean compareFieldOrder; private final boolean compareFieldLogicalTypes; + private final boolean compareFieldDocs; private final Set jsonPropNamesToIgnore; public SchemaComparisonConfiguration( @@ -41,7 +42,7 @@ public SchemaComparisonConfiguration( boolean compareAliases, boolean compareIntToFloatDefaults, boolean compareFieldOrder, - boolean compareFieldLogicalTypes, + boolean compareFieldLogicalTypes, boolean compareFieldDocs, Set jsonPropNamesToIgnore ) { this.compareStringJsonProps = compareStringJsonProps; @@ -50,6 +51,7 @@ public SchemaComparisonConfiguration( this.compareIntToFloatDefaults = compareIntToFloatDefaults; this.compareFieldOrder = compareFieldOrder; this.compareFieldLogicalTypes = compareFieldLogicalTypes; + this.compareFieldDocs = compareFieldDocs; this.jsonPropNamesToIgnore = jsonPropNamesToIgnore; } @@ -89,6 +91,7 @@ public SchemaComparisonConfiguration compareStringJsonProps(boolean compare) { compareIntToFloatDefaults, compareFieldOrder, compareFieldLogicalTypes, + compareFieldDocs, jsonPropNamesToIgnore ); } @@ -101,6 +104,7 @@ public SchemaComparisonConfiguration compareNonStringJsonProps(boolean compare) compareIntToFloatDefaults, compareFieldOrder, compareFieldLogicalTypes, + compareFieldDocs, jsonPropNamesToIgnore ); } @@ -113,6 +117,7 @@ public SchemaComparisonConfiguration compareAliases(boolean compare) { compareIntToFloatDefaults, compareFieldOrder, compareFieldLogicalTypes, + compareFieldDocs, jsonPropNamesToIgnore ); } @@ -125,6 +130,7 @@ public SchemaComparisonConfiguration compareIntToFloatDefaults(boolean compare) compare, compareFieldOrder, compareFieldLogicalTypes, + compareFieldDocs, jsonPropNamesToIgnore ); } @@ -137,6 +143,7 @@ public SchemaComparisonConfiguration compareFieldOrder(boolean compare) { compareIntToFloatDefaults, compare, compareFieldLogicalTypes, + compareFieldDocs, jsonPropNamesToIgnore ); } @@ -149,6 +156,7 @@ public SchemaComparisonConfiguration compareFieldLogicalTypes(boolean compare) { compareIntToFloatDefaults, compareFieldOrder, compare, + compareFieldDocs, jsonPropNamesToIgnore ); } @@ -161,6 +169,7 @@ public SchemaComparisonConfiguration jsonPropNamesToIgnore(Set jsonPropN compareIntToFloatDefaults, compareFieldOrder, compareFieldLogicalTypes, + compareFieldDocs, jsonPropNamesToIgnore ); } diff --git a/helper/tests/helper-tests-allavro/src/test/java/com/linkedin/avroutil1/compatibility/ConfigurableSchemaComparatorTest.java b/helper/tests/helper-tests-allavro/src/test/java/com/linkedin/avroutil1/compatibility/ConfigurableSchemaComparatorTest.java index 10e3f2a70..2f6270d0f 100644 --- a/helper/tests/helper-tests-allavro/src/test/java/com/linkedin/avroutil1/compatibility/ConfigurableSchemaComparatorTest.java +++ b/helper/tests/helper-tests-allavro/src/test/java/com/linkedin/avroutil1/compatibility/ConfigurableSchemaComparatorTest.java @@ -71,6 +71,7 @@ public void testExceptionOnTryingToCompareNonStringsUnderOldAvro() throws Except true, true, true, + false, Collections.emptySet() ); switch (runtimeAvroVersion) { @@ -393,7 +394,7 @@ public void testDefaultValuesModernAvro() { default: Assert.assertTrue(ConfigurableSchemaComparator.equals(schemaA, schemaB, new SchemaComparisonConfiguration(false, false, true, - SchemaComparisonConfiguration.STRICT.isCompareIntToFloatDefaults(), true, true, + SchemaComparisonConfiguration.STRICT.isCompareIntToFloatDefaults(), true, true, false, Collections.emptySet()))); } diff --git a/parser/src/test/java/com/linkedin/avroutil1/util/ConfigurableAvroSchemaComparatorTest.java b/parser/src/test/java/com/linkedin/avroutil1/util/ConfigurableAvroSchemaComparatorTest.java index 3f6cdd5ac..b62e04af6 100644 --- a/parser/src/test/java/com/linkedin/avroutil1/util/ConfigurableAvroSchemaComparatorTest.java +++ b/parser/src/test/java/com/linkedin/avroutil1/util/ConfigurableAvroSchemaComparatorTest.java @@ -57,7 +57,7 @@ public void testEquals(String path1, String path2, boolean expectedResult) throw AvroRecordSchema recordSchema2 = (AvroRecordSchema) validateAndGetAvroRecordSchema(path2); SchemaComparisonConfiguration comparisonConfiguration = - new SchemaComparisonConfiguration(true, false, false, false, true, false, new HashSet( + new SchemaComparisonConfiguration(true, false, false, false, true, false, false, new HashSet( Arrays.asList("li.data.proto.numberFieldType", "li.data.proto.fieldNumber", "li.data.proto.fullyQualifiedName", "li.data.proto.enumValueNumbers"))); From 073ddb5193c05fa1582302a9034ac942276b9475 Mon Sep 17 00:00:00 2001 From: SrilakshmiBharadwaj Date: Fri, 28 Feb 2025 15:51:56 -0800 Subject: [PATCH 5/6] Changes to configurableschemacomparator to compare avro docs --- .../compatibility/SchemaComparisonConfiguration.java | 4 ++++ .../compatibility/ConfigurableSchemaComparator.java | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/helper/helper-common/src/main/java/com/linkedin/avroutil1/compatibility/SchemaComparisonConfiguration.java b/helper/helper-common/src/main/java/com/linkedin/avroutil1/compatibility/SchemaComparisonConfiguration.java index ca963f46c..eb08dec92 100644 --- a/helper/helper-common/src/main/java/com/linkedin/avroutil1/compatibility/SchemaComparisonConfiguration.java +++ b/helper/helper-common/src/main/java/com/linkedin/avroutil1/compatibility/SchemaComparisonConfiguration.java @@ -79,6 +79,10 @@ public boolean isCompareFieldLogicalTypes() { return compareFieldLogicalTypes; } + public boolean isCompareFieldDocs() { + return compareFieldDocs; + } + public Set getJsonPropNamesToIgnore() { return jsonPropNamesToIgnore; } diff --git a/helper/helper/src/main/java/com/linkedin/avroutil1/compatibility/ConfigurableSchemaComparator.java b/helper/helper/src/main/java/com/linkedin/avroutil1/compatibility/ConfigurableSchemaComparator.java index 23aa7b74a..09b88d45f 100644 --- a/helper/helper/src/main/java/com/linkedin/avroutil1/compatibility/ConfigurableSchemaComparator.java +++ b/helper/helper/src/main/java/com/linkedin/avroutil1/compatibility/ConfigurableSchemaComparator.java @@ -52,6 +52,7 @@ private static boolean equals(Schema a, Schema b, SchemaComparisonConfiguration boolean considerJsonNonStringProps = config.isCompareNonStringJsonProps(); boolean considerAliases = config.isCompareAliases(); boolean considerJsonProps = considerJsonStringProps || considerJsonNonStringProps; + boolean considerDocs = config.isCompareFieldDocs(); Set jsonPropNamesToIgnore = config.getJsonPropNamesToIgnore(); if (considerJsonProps && !hasSameObjectProps(a, b, considerJsonStringProps, considerJsonNonStringProps, @@ -59,6 +60,10 @@ private static boolean equals(Schema a, Schema b, SchemaComparisonConfiguration return false; } + if (considerDocs && !Objects.equals(a.getDoc(), b.getDoc())) { + return false; + } + switch (type) { //all of these have nothing more to compare by beyond their type and props case NULL: @@ -125,6 +130,7 @@ private static boolean recordSchemaEquals(Schema a, Schema b, SchemaComparisonCo boolean considerAliases = config.isCompareAliases(); boolean considerJsonProps = considerJsonStringProps || considerJsonNonStringProps; boolean compareIntToFloatDefaults = config.isCompareIntToFloatDefaults(); + boolean compareDocs = config.isCompareFieldDocs(); Set jsonPropNamesToIgnore = config.getJsonPropNamesToIgnore(); try { @@ -171,6 +177,9 @@ private static boolean recordSchemaEquals(Schema a, Schema b, SchemaComparisonCo if (considerAliases && !hasSameAliases(aField, bField)) { return false; } + if (compareDocs && !aField.doc().equals(bField.doc())) { + return false; + } } return true; } finally { From 14c021e3cfe227214b920586f9605e15606f55fb Mon Sep 17 00:00:00 2001 From: SrilakshmiBharadwaj Date: Fri, 28 Feb 2025 15:51:56 -0800 Subject: [PATCH 6/6] Reverting changes to configurableschemacomparator to compare avro docs