Uploaded image for project: 'Beam'
  1. Beam
  2. BEAM-8747

Remove Unused non-vendored Guava compile dependencies

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P2
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.18.0
    • Component/s: build-system
    • Labels:
      None

      Description

      Kenneth Knowles says:

      BeamModulePlugin just contains lists of versions to ease coordination across Beam modules, but mostly does not create dependencies. Most of Beam's modules only depend on a few things there. For example Guava is not a core dependency, but here is where it is actually depended upon:

      $ find . -name build.gradle | xargs grep library.java.guava
      ./sdks/java/core/build.gradle: shadowTest library.java.guava_testlib
      ./sdks/java/extensions/sql/jdbc/build.gradle: compile library.java.guava
      ./sdks/java/io/google-cloud-platform/build.gradle: compile library.java.guava
      ./sdks/java/io/kinesis/build.gradle: testCompile library.java.guava_testlib

      These results appear to be misleading. Grepping for 'import com.google.common', I see this as the actual state of things:

      • GCP connector does not appear to actually depend on Guava in compile scope
      • The Beam SQL JDBC driver does not appear to actually depend on Guava in compile scope
      • The Dataflow Java worker does depend on Guava at compile scope but has incorrect dependencies (and it probably shouldn't)
      • KinesisIO does depend on Guava at compile scope but has incorrect dependencies (Kinesis libs have Guava on API surface so it is OK here, but should be correctly declared)
      • ZetaSQL translator does depend on Guava at compile scope but has incorrect dependencies (ZetaSQL has it on API surface so it is OK here, but should be correctly declared)

      We used to have an analysis that prevented this class of error.

      Once the errors are fixed, the guava_version is simply a version that we have discovered that seems to work for both Kinesis and ZetaSQL, libraries we do not control. Kinesis producer is built against 18.0. Kinesis client against 26.0-jre. ZetaSQL against 26.0-android.

      (or maybe I messed up in my analysis)

      Kenn

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                suztomo Tomo Suzuki
                Reporter:
                suztomo Tomo Suzuki
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 3h 10m
                  3h 10m