[
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, 7:01 PM:
-------------------------------------------------------------------
I tried upgrading the Guava version to 28.0 in 3.11 branch
([suztomo/CASSANDRA-15453
917464e|https://github.com/suztomo/cassandra/commit/917464eb3fe666be8c00672b905741befea8a66e]).
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}
Attempt with cassandra-driver-core 3.6.0 failed
([log|https://gist.github.com/suztomo/20e16ad85b019b919f7b148eab652f30]).
Notables:
{noformat}
[junit-timeout] Testcase:
testGroupByWithRangeNamesQueryWithPaging(org.apache.cassandra.cql3.validation.operations.SelectGroupByTest):
Caused an ERROR
[junit-timeout] Can not use V5 protocol version. Newest supported protocol
version is: V4. For beta versions, use `allowBetaProtocolVersion` instead
[junit-timeout] Testcase:
testJavascriptUserType(org.apache.cassandra.cql3.validation.entities.UFPureScriptTest):
Caused an ERROR
[junit-timeout] execution of 'cql_test_keyspace.function_43[type_41]' failed:
java.lang.RuntimeException: java.lang.NoClassDefFoundError: Could not
initialize class com.datastax.driver.core.Metadata
[junit-timeout] Testcase:
testJavascriptUTCollections(org.apache.cassandra.cql3.validation.entities.UFPureScriptTest):
Caused an ERROR
[junit-timeout] execution of
'cql_test_keyspace.function_6[list<frozen<type_4>>]' failed:
java.lang.RuntimeException: java.lang.ExceptionInInitializerError
[junit-timeout] Testcase:
testNoArgs(org.apache.cassandra.tools.CompactionStressTest): Caused an ERROR
[junit-timeout] java.lang.ClassNotFoundException:
org.apache.cassandra.stress.CompactionStress
[junit-timeout] java.lang.RuntimeException: java.lang.ClassNotFoundException:
org.apache.cassandra.stress.CompactionStress
[junit-timeout] Testcase:
testCustomIndexExpressionSyntax(org.apache.cassandra.index.CustomIndexTest):
FAILED
[junit-timeout] Query should be invalid but wrong error was thrown. Expected:
com.datastax.driver.core.exceptions.QueryValidationException, got:
java.lang.IllegalArgumentException. Query is: SELECT * FROM %s WHERE
expr(no_such_index, 'foo bar baz ') (values: [])
{noformat}
The older version used in trunk
- 3.6.0 on [Apr 10,
2018|https://github.com/apache/cassandra/commit/38b49904dd1c71fcb16abfbc205edfd6ce008b76]
- 3.4.0-SNAPSHOT on [Feb 1,
2018|https://github.com/apache/cassandra/blame/e8ff2f2b8ebb3990b99c81f839f6463bbff381f4/build.xml]
- 4.0.0-SNAPSHOT on [Nov 9,
2017|https://github.com/apache/cassandra/blame/59a4624d5f9b2c414b200e65b45beed9c5f4db52/build.xml]
- 3.0.1 on [May 23,
2016|https://github.com/apache/cassandra/blame/4de7a65ed9f3c97658a80dd64032ad6e82e9d58b/build.xml]
was (Author: suztomo):
I tried upgrading the Guava version to 28.0 in 3.11 branch
([suztomo/CASSANDRA-15453
917464e|https://github.com/suztomo/cassandra/commit/917464eb3fe666be8c00672b905741befea8a66e]).
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}
Attempt with cassandra-driver-core 3.6.0 failed
([log|https://gist.github.com/suztomo/20e16ad85b019b919f7b148eab652f30]).
Notables:
{noformat}
[junit-timeout] Testcase:
testGroupByWithRangeNamesQueryWithPaging(org.apache.cassandra.cql3.validation.operations.SelectGroupByTest):
Caused an ERROR
[junit-timeout] Can not use V5 protocol version. Newest supported protocol
version is: V4. For beta versions, use `allowBetaProtocolVersion` instead
[junit-timeout] Testcase:
testJavascriptUserType(org.apache.cassandra.cql3.validation.entities.UFPureScriptTest):
Caused an ERROR
[junit-timeout] execution of 'cql_test_keyspace.function_43[type_41]' failed:
java.lang.RuntimeException: java.lang.NoClassDefFoundError: Could not
initialize class com.datastax.driver.core.Metadata
[junit-timeout] Testcase:
testJavascriptUTCollections(org.apache.cassandra.cql3.validation.entities.UFPureScriptTest):
Caused an ERROR
[junit-timeout] execution of
'cql_test_keyspace.function_6[list<frozen<type_4>>]' failed:
java.lang.RuntimeException: java.lang.ExceptionInInitializerError
[junit-timeout] Testcase:
testNoArgs(org.apache.cassandra.tools.CompactionStressTest): Caused an ERROR
[junit-timeout] java.lang.ClassNotFoundException:
org.apache.cassandra.stress.CompactionStress
[junit-timeout] java.lang.RuntimeException: java.lang.ClassNotFoundException:
org.apache.cassandra.stress.CompactionStress
[junit-timeout] Testcase:
testCustomIndexExpressionSyntax(org.apache.cassandra.index.CustomIndexTest):
FAILED
[junit-timeout] Query should be invalid but wrong error was thrown. Expected:
com.datastax.driver.core.exceptions.QueryValidationException, got:
java.lang.IllegalArgumentException. Query is: SELECT * FROM %s WHERE
expr(no_such_index, 'foo bar baz ') (values: [])
{noformat}
> 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: [email protected]
For additional commands, e-mail: [email protected]