apache/beam · warning

withThrottlingReportTargetMs has been removed and does not…

Error message

withThrottlingReportTargetMs has been removed and does not have an effect.

What it means

withThrottlingReportTargetMs was removed in Beam 2.60.0 and no longer has any effect. The BigtableIO.Write transform keeps the method for source compatibility but only logs a warning and returns the unchanged Write object, so caller configuration is silently ignored.

Solutions

  1. Remove the .withThrottlingReportTargetMs(...) call from your pipeline code.
  2. If throttling behavior is needed, configure it via Bigtable service-side settings or use a different rate-limiting approach (e.g. Beam's autoscaling or a custom rate-limiting DoFn).
  3. Pin to Beam < 2.60.0 only if the old throttling behavior is strictly required (not recommended).

Example fix

// before
pipeline.apply("Read", BigtableIO.read().withProjectId(project).withInstanceId(instance).withThrottlingReportTargetMs(5000));
// after
pipeline.apply("Read", BigtableIO.read().withProjectId(project).withInstanceId(instance));
Defensive patterns

Strategy: validation

Validate before calling

// Java: fail fast on removed API usage
if (writeObj.getClass().getSimpleName().equals("Write") && beamVersionAtLeast("2.60.0")) {
    // do not call withThrottlingReportTargetMs
}

Prevention

When it happens

Trigger: Calling BigtableIO.write().withThrottlingReportTargetMs(<int>) after upgrading to Beam 2.60.0 or later.

Common situations: Pipelines migrated from older Beam versions that used Bigtable throttling-based rate limiting (the Bigtable throttling mensuration/reporting mechanism was removed); code compiled against the old API re-run on a newer Beam runner.

Understand the failure class

Background: "is deprecated and will be removed" — deprecation warnings for old API names, keywords, and options, and how to migrate before the removal release — this error's family across 29 libraries.

Related errors


AI-assisted analysis of apache/beam@12126d8942 (2026-09-13). Data as JSON: /api/errors/240b4d0dc2f52163. Report an issue: GitHub.

Appendix: source

Thrown at sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.java:1158

          .setBigtableWriteOptions(options.toBuilder().setFlowControl(enableFlowControl).build())
          .build();
    }

    /**
     * @deprecated This method has been deprecated in Beam 2.60.0. It does not have an effect.
     */
    @Deprecated
    public Write withThrottlingTargetMs(int throttlingTargetMs) {
      LOG.warn("withThrottlingTargetMs has been removed and does not have effect.");
      return this;
    }

    /**
     * @deprecated This method has been deprecated in Beam 2.60.0. It does not have an effect.
     */
    @Deprecated
    public Write withThrottlingReportTargetMs(int throttlingReportTargetMs) {
      LOG.warn("withThrottlingReportTargetMs has been removed and does not have an effect.");
      return this;
    }

    public Write withErrorHandler(ErrorHandler<BadRecord, ?> badRecordErrorHandler) {
      return toBuilder()
          .setBadRecordErrorHandler(badRecordErrorHandler)
          .setBadRecordRouter(BadRecordRouter.RECORDING_ROUTER)
          .build();
    }

    @VisibleForTesting
    Write withServiceFactory(BigtableServiceFactory factory) {
      return toBuilder().setServiceFactory(factory).build();
    }

    /**
     * Returns a {@link BigtableIO.WriteWithResults} that will emit a {@link BigtableWriteResult}
     * for each batch of rows written.

View on GitHub (pinned to 12126d8942)