You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Tamas Penzes (JIRA)" <ji...@apache.org> on 2017/07/27 16:04:00 UTC

[jira] [Commented] (HBASE-18304) Start enforcing upperbounds on dependencies

    [ https://issues.apache.org/jira/browse/HBASE-18304?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16103391#comment-16103391 ] 

Tamas Penzes commented on HBASE-18304:
--------------------------------------

Hi,

I've added the RequireUpperBoundDeps enforcer plugin to the project which immediately complained about the use of old version of com.google.protobuf:protobuf-java.

{code}
[INFO] --- maven-enforcer-plugin:1.4.1:enforce (require-upper-bound-deps) @ hbase-procedure ---
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequireUpperBoundDeps failed with message:
Failed while enforcing RequireUpperBoundDeps. The error(s) are [
Require upper bound dependencies error for com.google.protobuf:protobuf-java:2.5.0 paths to dependency are:
+-org.apache.hbase:hbase-procedure:3.0.0-SNAPSHOT
  +-org.apache.hbase:hbase-common:3.0.0-SNAPSHOT
    +-com.google.protobuf:protobuf-java:2.5.0
and
+-org.apache.hbase:hbase-procedure:3.0.0-SNAPSHOT
  +-org.apache.hbase:hbase-protocol-shaded:3.0.0-SNAPSHOT
    +-com.google.protobuf:protobuf-java:2.5.0 (managed) <-- com.google.protobuf:protobuf-java:3.2.0
and
+-org.apache.hbase:hbase-procedure:3.0.0-SNAPSHOT
  +-org.apache.hbase:hbase-common:3.0.0-SNAPSHOT
    +-com.google.protobuf:protobuf-java:2.5.0 (managed) <-- com.google.protobuf:protobuf-java:3.2.0
and
+-org.apache.hbase:hbase-procedure:3.0.0-SNAPSHOT
  +-org.apache.hadoop:hadoop-common:2.7.1
    +-com.google.protobuf:protobuf-java:2.5.0 (managed) <-- com.google.protobuf:protobuf-java:3.2.0
{code}

From the main pom.xml I've already seen that it won't be simple:
{code}
<!--Internally we use a different version of protobuf. See hbase-protocol-shaded-->
<external.protobuf.version>2.5.0</external.protobuf.version>
{code}

Okay, but let's try to update it to 3.2.0 agains the comment, let's see what happens (it can show the cause of the comment):

{code}
INFO] --- maven-compiler-plugin:3.6.1:compile (default-compile) @ hbase-protocol ---
[INFO] Compiling 31 source files to /Users/tamaspenzes/projects/hbase-apache/hbase-protocol/target/classes
[INFO] /Users/tamaspenzes/projects/hbase-apache/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/RPCProtos.java: Some input files use or override a deprecated API.
[INFO] /Users/tamaspenzes/projects/hbase-apache/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/RPCProtos.java: Recompile with -Xlint:deprecation for details.
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /Users/tamaspenzes/projects/hbase-apache/hbase-protocol/src/main/java/com/google/protobuf/HBaseZeroCopyByteString.java:[30,52] cannot find symbol
  symbol: class LiteralByteString
[ERROR] /Users/tamaspenzes/projects/hbase-apache/hbase-protocol/src/main/java/com/google/protobuf/HBaseZeroCopyByteString.java:[44,16] cannot find symbol
  symbol:   class LiteralByteString
  location: class com.google.protobuf.HBaseZeroCopyByteString
[ERROR] /Users/tamaspenzes/projects/hbase-apache/hbase-protocol/src/main/java/com/google/protobuf/HBaseZeroCopyByteString.java:[55,16] cannot find symbol
  symbol:   class BoundedByteString
  location: class com.google.protobuf.HBaseZeroCopyByteString
[ERROR] /Users/tamaspenzes/projects/hbase-apache/hbase-protocol/src/main/java/com/google/protobuf/HBaseZeroCopyByteString.java:[68,24] cannot find symbol
  symbol:   class LiteralByteString
  location: class com.google.protobuf.HBaseZeroCopyByteString
[ERROR] /Users/tamaspenzes/projects/hbase-apache/hbase-protocol/src/main/java/com/google/protobuf/HBaseZeroCopyByteString.java:[69,16] cannot find symbol
  symbol:   class LiteralByteString
  location: class com.google.protobuf.HBaseZeroCopyByteString
[INFO] 5 errors 
{code}

Only five errors, because the build died after the first failed subproject.
These classes (LiteralByteString and BoundedByteString) became private inner classes of ByteString recently. (I guess with version 3.0)
But there might be other changes in the API too.

Should I create a separate ticket for updating ProtoBuf which we use all over the code?
I could set it as a dependency for this ticket.

Thank, Tamaas

> Start enforcing upperbounds on dependencies
> -------------------------------------------
>
>                 Key: HBASE-18304
>                 URL: https://issues.apache.org/jira/browse/HBASE-18304
>             Project: HBase
>          Issue Type: Task
>          Components: build, dependencies
>    Affects Versions: 2.0.0
>            Reporter: Sean Busbey
>            Assignee: Tamas Penzes
>              Labels: beginner
>             Fix For: 2.0.0
>
>
> would be nice to get this going before our next major version.
> http://maven.apache.org/enforcer/enforcer-rules/requireUpperBoundDeps.html



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)