Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BEAM-8691] bigtable-client-core dependency upgrade #10714

Merged
merged 2 commits into from Feb 3, 2020

Conversation

suztomo
Copy link
Contributor

@suztomo suztomo commented Jan 29, 2020

https://issues.apache.org/jira/projects/BEAM/issues/BEAM-8691

  • Upgrading bigtable-client-core to the latest 1.13.0
  • The exposed API surface reduced. The associated test is updated.
  • Because bigtable-client-core:1.13.0 introduced conflicts in Maven version range, excluding grpc-core dependencies from bigtable-client-core and google-cloud-core-grpc, so that the module uses grpc version 1.25.0 (detail)
  • Upgrading gax to avoid linkage errors (detail)
  • Declaring grpc-grpclb 1.25.0 to avoid linkage errors (detail)

Linkage Check result

Checked beam-sdks-java-core, beam-sdks-java-io-google-cloud-platform, beam-runners-google-cloud-dataflow-java and beam-sdks-java-io-hadoop-format.

https://gist.github.com/suztomo/1bedcd7c63bc88310fff3854c19710d6

For beam-sdks-java-io-google-cloud-platform and beam-runners-google-cloud-dataflow-java

  • This PR removes linkage errors on gax-httpjson-0.52.0.jar
  • This PR upgrades the version of appengine-api-1.0-sdk in the errors. These are irrelevant to Beam.

Using this shell script https://gist.github.com/suztomo/ec4834151a81f8e1d26aa0afb278818b


Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

  • Choose reviewer(s) and mention them in a comment (R: @username).
  • Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
  • If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.

Post-Commit Tests Status (on master branch)

Lang SDK Apex Dataflow Flink Gearpump Samza Spark
Go Build Status --- --- Build Status --- --- Build Status
Java Build Status Build Status Build Status Build Status
Build Status
Build Status
Build Status Build Status Build Status
Build Status
Build Status
Python Build Status
Build Status
Build Status
Build Status
--- Build Status
Build Status
Build Status
Build Status
--- --- Build Status
XLang --- --- --- Build Status --- --- ---

Pre-Commit Tests Status (on master branch)

--- Java Python Go Website
Non-portable Build Status Build Status
Build Status
Build Status Build Status
Portable --- Build Status --- ---

See .test-infra/jenkins/README for trigger phrase, status and link of all Jenkins jobs.

@@ -61,11 +61,9 @@ public void testGcpApiSurface() throws Exception {
classesInPackage("com.google.api.client.util"),
classesInPackage("com.google.api.services.bigquery.model"),
classesInPackage("com.google.auth"),
classesInPackage("com.google.bigtable.admin.v2"),
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The exposed API surface reduced.

@lukecwik
Copy link
Member

ping for tests

@lukecwik
Copy link
Member

Run Java PostCommit

@lukecwik
Copy link
Member

Run Java HadoopFormatIO Performance Test

@lukecwik
Copy link
Member

Run BigQueryIO Streaming Performance Test Java

@lukecwik
Copy link
Member

Run Dataflow ValidatesRunner

@lukecwik
Copy link
Member

Run Spark ValidatesRunner

@lukecwik
Copy link
Member

Run SQL Postcommit

@suztomo
Copy link
Contributor Author

suztomo commented Jan 29, 2020

@lukecwik Thank you.

@suztomo
Copy link
Contributor Author

suztomo commented Jan 30, 2020

Java precommit failed:

18:48:45 > Task :sdks:java:io:rabbitmq:test FAILED
18:48:45 
18:48:45 FAILURE: Build failed with an exception.
18:48:45 
18:48:45 * What went wrong:
18:48:45 Execution failed for task ':sdks:java:io:rabbitmq:test'.
18:48:45 > Process 'Gradle Test Executor 124' finished with non-zero exit value 143
18:48:45   This problem might be caused by incorrect test process configuration.
18:48:45   Please refer to the test execution section in the User Manual at https://docs.gradle.org/5.2.1/userguide/java_testing.html#sec:test_execution

Java_Examples_Dataflow failed:

java.lang.RuntimeException: Dataflow job 2020-01-29_13_55_09-15611797686391011440 terminated in state UNRECOGNIZED but did not return a failure reason.

They both seem transient errors.

@boyuanzz
Copy link
Contributor

Run Java PreCommit

@boyuanzz
Copy link
Contributor

Run Java_Examples_Dataflow PreCommit

@suztomo
Copy link
Contributor Author

suztomo commented Jan 30, 2020

@boyuanzz Thank you!

@suztomo
Copy link
Contributor Author

suztomo commented Jan 30, 2020

Java precommit failed:

WARNING: Found Netty's native epoll transport in the classpath, but epoll is not available. Using NIO instead.
java.lang.UnsatisfiedLinkError: could not load a native library: netty-transport-native-epoll

Caused by: java.lang.RuntimeException: failed to get field ID: DefaultFileRegion.transfered

https://builds.apache.org/job/beam_PreCommit_Java_Phrase/1686/testReport/junit/org.apache.beam.sdk.io.cassandra/CassandraIOTest/classMethod/

Java_Examples_Dataflow failed again with the same error.

java.lang.RuntimeException: Dataflow job 2020-01-29_20_12_07-5864892158255540617 terminated in state UNRECOGNIZED but did not return a failure reason.

Sent an email on this to beam dev mailing list.

@udim
Copy link
Member

udim commented Jan 31, 2020

Run Java PreCommit

@udim
Copy link
Member

udim commented Jan 31, 2020

Run Java_Examples_Dataflow PreCommit

@suztomo
Copy link
Contributor Author

suztomo commented Jan 31, 2020

Dataflow example still fails. This time it's "No space left on device":

12:39:08 > Task :runners:google-cloud-dataflow-java:examples:preCommitLegacyWorker
12:39:08 java.io.IOException: No space left on device
12:39:08 com.esotericsoftware.kryo.KryoException: java.io.IOException: No space left on device

https://builds.apache.org/job/beam_PreCommit_Java_Examples_Dataflow_Phrase/268/consoleFull

Is this specific to this PR? I'll confirm the word-count example in my local environment with my branch.

@udim Thank you.

@udim
Copy link
Member

udim commented Jan 31, 2020

Dataflow example still fails. This time it's "No space left on device":

12:39:08 > Task :runners:google-cloud-dataflow-java:examples:preCommitLegacyWorker
12:39:08 java.io.IOException: No space left on device
12:39:08 com.esotericsoftware.kryo.KryoException: java.io.IOException: No space left on device

https://builds.apache.org/job/beam_PreCommit_Java_Examples_Dataflow_Phrase/268/consoleFull

Is this specific to this PR? I'll confirm the word-count example in my local environment with my branch.

jenkins@apache-beam-jenkins-7:~$ df -h .
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       485G  484G 1001M 100% /

Probably not specific to your PR.

@alexvanboxel
Copy link
Contributor

Run Java_Examples_Dataflow PreCommit

@suztomo
Copy link
Contributor Author

suztomo commented Feb 3, 2020

R: @lukecwik @kennknowles
21 successful checks! Would you review/merge this PR?

@alexvanboxel Thank you.

@@ -41,9 +41,14 @@ dependencies {
compile library.java.google_auth_library_credentials
compile library.java.google_auth_library_oauth2_http
compile library.java.google_cloud_bigquery_storage
compile library.java.google_cloud_bigtable_client_core
compile(library.java.google_cloud_bigtable_client_core) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are these exclusions needed?

The maven pom that this module will generate has grpc-core and grpclb as top level dependencies and maven resolution rules will choose those over the ones specified by bigtable-client-core or google-cloud-core-grpc so I would have expected that we wouldn't need the exclusions.

Copy link
Contributor Author

@suztomo suztomo Feb 3, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These exclusions are for Maven's version range constraint. The dependency was transitively requesting io.grpc:grpc-core:jar:[1.26.0,1.26.0], while another dependency requests io.grpc:grpc-core:jar:[1.25.0,1.25.0]. This version range conflict would fail the build before Maven's dependency mediation (that would choose the closest one) happens. Detail in https://issues.apache.org/jira/browse/BEAM-8691?focusedCommentId=17025456&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17025456

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wasn't aware that the build would fail before the dependency mediation kicked in.

@suztomo suztomo requested a review from lukecwik February 3, 2020 20:09
@lukecwik lukecwik merged commit 7fa02bb into apache:master Feb 3, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants