Skip to content

[Task]: Migrate Java SDK GcsUtil from gcsio to the java-storage client #40712

Open

Description

@shunping

What needs to happen?

Umbrella issue for moving the Java SDK's GCS access (GcsUtil, used by GcsFileSystem and anything reading or writing gs:// paths) off the gcsio / google-api-services-storage stack (GcsUtil V1) and onto the Cloud Storage Java client library google-cloud-storage (GcsUtil V2).

Background

GcsUtil is a facade over two implementations:

  • GcsUtilV1: the existing gcsio-based implementation.
  • GcsUtilV2: the new implementation built on com.google.cloud.storage.Storage.
    V2 was introduced behind the use_gcsutil_v2 experiment. It then gained feature and performance parity with V1, with parity integration tests (GcsUtilIT) running both implementations side by side.

Rollout plan

  1. Implement V2 behind an opt-in experiment (use_gcsutil_v2). Done.
  2. Reach feature and performance parity, with test coverage. Done.
  3. Make V2 the default. Keep disable_gcsutil_v2 as a fallback; use_grpc_for_gcs also stays on V1. In progress.
  4. Let V2 run as the default for at least 3 releases and fix whatever turns up.
  5. Remove V1 and the gcsio dependency, and retire the use_gcsutil_v2 / disable_gcsutil_v2 experiments.

Experiments

Experiment Effect (once V2 is the default)
(none) GcsUtil V2
disable_gcsutil_v2 Fall back to GcsUtil V1
use_grpc_for_gcs GcsUtil V1 over gRPC (gRPC is not supported by V2 yet)
use_gcsutil_v2 Ignored; kept so existing pipelines don't break

Completed work

Remaining work

Issue Priority

Priority: 2 (default / most normal work should be filed as P2)

Issue Components

  • Component: Python SDK
  • Component: Java SDK
  • Component: Go SDK
  • Component: Typescript SDK
  • Component: IO connector
  • Component: Beam YAML
  • Component: Beam examples
  • Component: Beam playground
  • Component: Beam katas
  • Component: Website
  • Component: Infrastructure
  • Component: Spark Runner
  • Component: Flink Runner
  • Component: Prism Runner
  • Component: Twister2 Runner
  • Component: Hazelcast Jet Runner
  • Component: Google Cloud Dataflow Runner
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions