mutianf commented on code in PR #24015:
URL: https://github.com/apache/beam/pull/24015#discussion_r1110407103
##########
sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigtable/BigtableIO.java:
##########
@@ -764,35 +894,119 @@ public Write withoutValidation() {
}
/**
- * Returns a new {@link BigtableIO.Write} that will write using the given
Cloud Bigtable service
- * implementation.
+ * Returns a new {@link BigtableIO.Write} that will use an official
Bigtable emulator.
*
* <p>This is used for testing.
+ */
+ @VisibleForTesting
+ public Write withEmulator(String emulatorHost) {
+ BigtableConfig config = getBigtableConfig();
+ return
toBuilder().setBigtableConfig(config.withEmulator(emulatorHost)).build();
+ }
+
+ /**
+ * Returns a new {@link BigtableIO.Write} with the attempt timeout in
milliseconds for writes.
*
* <p>Does not modify this object.
*/
- Write withBigtableService(BigtableService bigtableService) {
- BigtableConfig config = getBigtableConfig();
- return
toBuilder().setBigtableConfig(config.withBigtableService(bigtableService)).build();
+ public Write withAttemptTimeout(long timeoutMs) {
+ checkArgument(timeoutMs > 0, "attempt timeout must be positive");
+ BigtableWriteOptions options = getBigtableWriteOptions();
+ return toBuilder()
+
.setBigtableWriteOptions(options.toBuilder().setAttemptTimeout(timeoutMs).build())
+ .build();
}
/**
- * Returns a new {@link BigtableIO.Write} that will use an official
Bigtable emulator.
+ * Returns a new {@link BigtableIO.Write} with the operation timeout in
milliseconds for writes.
*
- * <p>This is used for testing.
+ * <p>Does not modify this object.
+ */
+ public Write withOperationTimeout(long timeoutMs) {
+ checkArgument(timeoutMs > 0, "operation timeout must be positive");
+ BigtableWriteOptions options = getBigtableWriteOptions();
+ return toBuilder()
+
.setBigtableWriteOptions(options.toBuilder().setOperationTimeout(timeoutMs).build())
+ .build();
+ }
+
+ /**
+ * Returns a new {@link BigtableIO.Write} with the retry delay in
milliseconds.
+ *
+ * <p>Does not modify this object.
+ */
+ public Write withRetryInitialDelay(long delayMs) {
+ checkArgument(delayMs > 0, "delay must be positive");
+ BigtableWriteOptions options = getBigtableWriteOptions();
+ return toBuilder()
+
.setBigtableWriteOptions(options.toBuilder().setRetryInitialDelay(delayMs).build())
+ .build();
+ }
+
+ /**
+ * Returns a new {@link BigtableIO.Write} with retry multiplier.
+ *
+ * <p>Does not modify this object.
+ */
+ public Write withRetryDelayMultiplier(double multiplier) {
+ checkArgument(multiplier > 0, "multiplier must be positive");
+ BigtableWriteOptions options = getBigtableWriteOptions();
+ return toBuilder()
+
.setBigtableWriteOptions(options.toBuilder().setRetryDelayMultiplier(multiplier).build())
+ .build();
+ }
+
+ /**
+ * Returns a new {@link BigtableIO.Write} with the number of elements in a
batch.
+ *
+ * <p>Does not modify this object.
+ */
+ public Write withBatchElements(long size) {
+ checkArgument(size > 0, "batch element size must be positive");
+ BigtableWriteOptions options = getBigtableWriteOptions();
+ return toBuilder()
+
.setBigtableWriteOptions(options.toBuilder().setBatchElements(size).build())
+ .build();
+ }
+
+ /**
+ * Returns a new {@link BigtableIO.Write} with the number of bytes in a
batch.
+ *
+ * <p>Does not modify this object.
+ */
+ public Write withBatchBytes(long size) {
+ checkArgument(size > 0, "batch byte size must be positive");
+ BigtableWriteOptions options = getBigtableWriteOptions();
+ return toBuilder()
+
.setBigtableWriteOptions(options.toBuilder().setBatchBytes(size).build())
+ .build();
+ }
+
+ /**
+ * Returns a new {@link BigtableIO.Write} with the max number of
concurrent requests.
+ *
+ * <p>Does not modify this object.
*/
+ public Write withMaxRequests(long requests) {
Review Comment:
I think it's easier to do the calculation than setting outstandingElements
and outstandingBytes, which might confuse people..
https://github.com/googleapis/java-bigtable/blob/main/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java#L679-L680
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]