[ 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:11 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] Attemtp with cassandra-driver-core 3.4.0 failed (). Notables: {noformat} [junit-timeout] Testcase: org.apache.cassandra.cql3.ViewTest: Caused an ERROR [junit-timeout] com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor()Lcom/google/common/util/concurrent/ListeningExecutorService; [junit-timeout] java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor()Lcom/google/common/util/concurrent/ListeningExecutorService; [junit-timeout] Testcase: testSelectJsonWithPagingWithFrozenTuple(org.apache.cassandra.cql3.validation.entities.JsonTest): Caused an ERROR [junit-timeout] null [junit-timeout] java.lang.NullPointerException {noformat} 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} 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] Attemtp with cassandra-driver-core 3.4.0 failed (). Notables: {noformat} [junit-timeout] Testcase: org.apache.cassandra.cql3.ViewTest: Caused an ERROR [junit-timeout] com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor()Lcom/google/common/util/concurrent/ListeningExecutorService; [junit-timeout] java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor()Lcom/google/common/util/concurrent/ListeningExecutorService; {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: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org