You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Tomo Suzuki (Jira)" <ji...@apache.org> on 2020/03/10 16:54:00 UTC

[jira] [Comment Edited] (CASSANDRA-15453) Upgrade Guava to the same version as master on 3.11 branch

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

Tomo Suzuki edited comment on CASSANDRA-15453 at 3/10/20, 4:53 PM:
-------------------------------------------------------------------

I tried upgrading the Guava version to 28.0 in 3.11 branch ([suztomo/CASSANDRA-15453|https://github.com/suztomo/cassandra/tree/CASSANDRA-15453]). The test failure revealed that cassandra-driver-core is not compatible with the Guava version on {{NoSuchMethodError: com.google.common.base.Objects.firstNonNull}} ([log|https://gist.github.com/suztomo/3af9dd38b82335b2f0c1813595c6e536]).

While cassandra-driver-core version 3.0.1-shaded has references to the removed methods, 3.6.0-shaded does not have references.


{noformat}
suztomo@suxtomo24:~/cassandra/lib$ javap -v -cp /tmp/cassandra-driver-core-3.6.0-shaded.jar 'com.datastax.driver.core.policies.Policies$Builder' |grep firstNonNull
suztomo@suxtomo24:~/cassandra/lib$ javap -v -cp cassandra-driver-core-3.0.1-shaded.jar   'com.datastax.driver.core.policies.Policies$Builder' |grep firstNonNull
   #67 = Utf8               firstNonNull
   #69 = NameAndType        #67:#68       // firstNonNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
   #70 = Methodref          #66.#69       // com/google/common/base/Objects.firstNonNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
        28: invokestatic  #70                 // Method com/google/common/base/Objects.firstNonNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
        41: invokestatic  #70                 // Method com/google/common/base/Objects.firstNonNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
        54: invokestatic  #70                 // Method com/google/common/base/Objects.firstNonNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
        67: invokestatic  #70                 // Method com/google/common/base/Objects.firstNonNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
        80: invokestatic  #70                 // Method com/google/common/base/Objects.firstNonNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

{noformat}




was (Author: suztomo):
I tried upgrading the Guava version to 28.0 in 3.11 branch ([suztomo/CASSANDRA-15453|https://github.com/suztomo/cassandra/tree/CASSANDRA-15453]). The test failure revealed that cassandra-driver-core is not compatible with the Guava version on {{NoSuchMethodError: com.google.common.base.Objects.firstNonNull}} ([log|https://gist.github.com/suztomo/3af9dd38b82335b2f0c1813595c6e536]).

> Upgrade Guava to the same version as master on 3.11 branch
> ----------------------------------------------------------
>
>                 Key: CASSANDRA-15453
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-15453
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Dependencies
>            Reporter: Tomo Suzuki
>            Priority: Normal
>
> Can we backport the Guava version upgrade (CASSANDRA-15248) into 3.11 branch?
> h3. Background
> I'm trying to upgrade Apache Beam's dependencies to latest versions. Apache Beam depends on Cassandra 3 ({{org.apache.cassandra:cassandra-all:3.11.3}}).
> Cassandra 3 touches on Guava's old fields (and potentially methods), such as CharMatcher.DIGIT, are blocking Apache Beam's Guava dependency upgrade (BEAM-8911); the field is removed in Guava 26.0. Because of this, Apache Beam's Guava dependency must be lower than version 26.0.
> I see the latest cassandra-all release on 3.X is 3.11.5, which still relies on Guava 18. This version does not have {{CharMatcher.digit()}}, the replacement of old {{CharMatcher.DIGIT}}. To get rid of {{CharMatcher.DIGIT}} and thus let Apache Beam to use Guava 26 and higher, we need to upgrade Cassandra3's Guava version.
> h4. Test failure Beam's HadoopFormatIOCassandraTest
> Apache Beam's {{:sdks:java:io:hadoop-format}} has {{HadoopFormatIOCassandraTest}} that failed when I tried to upgrade Guava version to 26: https://github.com/GoogleCloudPlatform/cloud-opensource-java/issues/1028#issuecomment-557680928 .
> h3. How about waiting for Cassandra version 4(-alpha)?
> I thought about Cassandra "4", which has a recent version of Guava. However, I believe quite a few Cassandra/Beam users will keep using Casandra 3 for several years. I want such users to be able to use the higher version of Guava. 
> h3. Shading?
> Shading makes build process complex. When things go wrong due to this, it's hard to debug ([JLBP18|https://jlbp.dev/JLBP-18.html]). 
> h3. CASSANDRA-15248 "Upgrade Guava to latest on master branch",
> I found CASSANDRA-15248 "Upgrade Guava to latest on master branch", but this did not go into 3.11 branch. Can we backport this Guava version upgrade (CASSANDRA-15248) into 3.11 branch?



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org