This is an automated email from the ASF dual-hosted git repository.
gabor pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/parquet-mr.git
The following commit(s) were added to refs/heads/master by this push:
new ce55c9b PARQUET-1703: Update API compatibility check (#709)
ce55c9b is described below
commit ce55c9b2c3db49bdf0c7c4f4450a00ba51dfcc7b
Author: Gabor Szadovszky <[email protected]>
AuthorDate: Tue Jan 7 09:58:08 2020 +0100
PARQUET-1703: Update API compatibility check (#709)
---
dev/finalize-release | 1 +
parquet-benchmarks/pom.xml | 5 ---
parquet-cli/pom.xml | 5 ---
parquet-tools/pom.xml | 1 -
pom.xml | 95 ++++++++++++++++++++++++----------------------
5 files changed, 51 insertions(+), 56 deletions(-)
diff --git a/dev/finalize-release b/dev/finalize-release
index 503201d..e06524a 100755
--- a/dev/finalize-release
+++ b/dev/finalize-release
@@ -35,6 +35,7 @@ new_development_version="$3-SNAPSHOT"
git tag -am "Release Apache Parquet $release_version" "$release_tag" "$rc_tag"
mvn --batch-mode release:update-versions
-DdevelopmentVersion="$new_development_version"
+mvn -pl . versions:set-property -Dproperty=previous.version
-DnewVersion="$release_version"
git commit -am 'Prepare for next development iteration'
echo
diff --git a/parquet-benchmarks/pom.xml b/parquet-benchmarks/pom.xml
index fe72f3b..5e33057 100644
--- a/parquet-benchmarks/pom.xml
+++ b/parquet-benchmarks/pom.xml
@@ -83,11 +83,6 @@
<build>
<plugins>
- <!-- This module disables semver checks because it is not a public API.
- <plugin>
- <artifactId>maven-enforcer-plugin</artifactId>
- </plugin>
- -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
diff --git a/parquet-cli/pom.xml b/parquet-cli/pom.xml
index 3d2202b..809b1f7 100644
--- a/parquet-cli/pom.xml
+++ b/parquet-cli/pom.xml
@@ -95,11 +95,6 @@
<build>
<plugins>
- <!-- This module disables semver checks because it is not a public API.
- <plugin>
- <artifactId>maven-enforcer-plugin</artifactId>
- </plugin>
- -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
diff --git a/parquet-tools/pom.xml b/parquet-tools/pom.xml
index 196f8c2..3da1c65 100644
--- a/parquet-tools/pom.xml
+++ b/parquet-tools/pom.xml
@@ -81,7 +81,6 @@
<build>
<plugins>
- <!--We do not turn on semver checking for parquet-tools, since it's not
considered as an API-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
diff --git a/pom.xml b/pom.xml
index e837d8a..719655f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -77,12 +77,13 @@
<jackson.package>com.fasterxml.jackson</jackson.package>
<jackson.version>2.9.10</jackson.version>
<jackson-databind.version>2.9.10</jackson-databind.version>
+ <japicmp.version>0.14.2</japicmp.version>
<shade.prefix>shaded.parquet</shade.prefix>
<hadoop.version>2.7.3</hadoop.version>
<cascading.version>2.7.1</cascading.version>
<cascading3.version>3.1.2</cascading3.version>
<parquet.format.version>2.7.0</parquet.format.version>
- <previous.version>1.7.0</previous.version>
+ <previous.version>1.11.0</previous.version>
<thrift.executable>thrift</thrift.executable>
<format.thrift.executable>thrift</format.thrift.executable>
<scala.version>2.12.8</scala.version>
@@ -235,50 +236,6 @@
</dependencies>
<executions>
<execution>
- <id>check</id>
- <phase>verify</phase>
- <goals>
- <goal>enforce</goal>
- </goals>
- <configuration>
- <rules>
- <requireBackwardCompatibility
implementation="org.semver.enforcer.RequireSemanticVersioningConformance">
- <dumpDetails>true</dumpDetails>
- <previousVersion>${previous.version}</previousVersion>
- <excludes>
- <exclude>org/apache/parquet/hadoop/util/**</exclude>
- <exclude>org/apache/parquet/thrift/projection/**</exclude>
-
<exclude>org/apache/parquet/thrift/ThriftSchemaConverter</exclude>
- <exclude>org/apache/parquet/filter2/**</exclude>
- <exclude>org/apache/parquet/column/**</exclude>
-
<exclude>org/apache/parquet/hadoop/ParquetInputSplit</exclude>
-
<exclude>org/apache/parquet/hadoop/CodecFactory**</exclude>
- <exclude>shaded/**</exclude> <!-- shaded by parquet -->
-
<exclude>org/apache/parquet/it/unimi/dsi/fastutil/**</exclude> <!-- Another
shaded dependency from parquet-column -->
- <exclude>org/apache/parquet/benchmarks/**</exclude>
- <exclude>org/openjdk/**</exclude>
- <!-- temporary exclusions for false-positives -->
- <exclude>org/apache/parquet/Version</exclude>
- <exclude>org/apache/parquet/schema/**</exclude> <!--
methods moved to new superclass -->
-
<exclude>org/apache/parquet/thrift/ThriftSchemaConvertVisitor</exclude> <!--
not public -->
-
<exclude>org/apache/parquet/avro/AvroParquetReader</exclude> <!-- returns
subclass of old return class -->
-
<exclude>org/apache/parquet/avro/SpecificDataSupplier</exclude> <!-- made
public -->
-
<exclude>org/apache/parquet/io/ColumnIOFactory$ColumnIOCreatorVisitor</exclude>
<!-- removed non-API class -->
-
<exclude>org/apache/parquet/io/ColumnIOFactory/**</exclude> <!-- removed
non-API class and methods-->
-
<exclude>org/apache/parquet/hadoop/codec/SnappyCompressor</exclude> <!-- added
synchronized modifier -->
- <exclude>org/apache/parquet/bytes/BytesInput</exclude>
<!-- moved to parquet-common -->
-
<exclude>org/apache/parquet/bytes/CapacityByteArrayOutputStream</exclude> <!--
moved to parquet-common -->
-
<exclude>org/apache/parquet/bytes/ConcatenatingByteArrayCollector</exclude>
<!-- moved to parquet-common -->
-
<exclude>org/apache/parquet/bytes/LittleEndianDataInputStream</exclude> <!--
moved to parquet-common -->
-
<exclude>org/apache/parquet/bytes/LittleEndianDataOutputStream</exclude> <!--
moved to parquet-common -->
-
<exclude>org/apache/parquet/hadoop/metadata/CompressionCodecName</exclude> <!--
moved to parquet-common -->
-
<exclude>org/apache/parquet/hadoop/codec/CompressionCodecNotSupportedException</exclude>
<!-- moved to parquet-common -->
- </excludes>
- </requireBackwardCompatibility>
- </rules>
- </configuration>
- </execution>
- <execution>
<id>enforce-banned-dependencies</id>
<goals>
<goal>enforce</goal>
@@ -503,6 +460,54 @@
</excludes>
</configuration>
</plugin>
+
+ <plugin>
+ <groupId>com.github.siom79.japicmp</groupId>
+ <artifactId>japicmp-maven-plugin</artifactId>
+ <version>${japicmp.version}</version>
+ <configuration>
+ <parameter>
+ <oldVersionPattern>${previous.version}</oldVersionPattern>
+
<breakBuildBasedOnSemanticVersioning>true</breakBuildBasedOnSemanticVersioning>
+ <onlyModified>true</onlyModified>
+ <overrideCompatibilityChangeParameters>
+ <!-- Adding a new method with default implementation to an
interface should be a compatible change.
+ That's why they invented it. -->
+ <overrideCompatibilityChangeParameter>
+ <compatibilityChange>METHOD_NEW_DEFAULT</compatibilityChange>
+ <semanticVersionLevel>MINOR</semanticVersionLevel>
+ <binaryCompatible>true</binaryCompatible>
+ <sourceCompatible>true</sourceCompatible>
+ </overrideCompatibilityChangeParameter>
+ </overrideCompatibilityChangeParameters>
+ <excludeModules>
+ <!-- Excluding the following modules because they are not part
of the parquet public API -->
+ <excludeModule>parquet-benchmarks</excludeModule>
+ <excludeModule>parquet-cli</excludeModule>
+ <excludeModule>parquet-tools</excludeModule>
+ <excludeModule>parquet-format-structures</excludeModule>
+
+ <!-- Excluding the following modules because bundles do not
contain any java classes while they still fail the
+ compatibility check because of missing dependencies -->
+ <excludeModule>parquet-hadoop-bundle</excludeModule>
+ <excludeModule>parquet-hive-bundle</excludeModule>
+ <excludeModule>parquet-pig-bundle</excludeModule>
+ </excludeModules>
+ <excludes>
+ <exclude>${shade.prefix}</exclude>
+ </excludes>
+ </parameter>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>verify</phase>
+ <goals>
+ <goal>cmp</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
</plugins>
</build>