Details
-
Bug
-
Status: Resolved
-
P2
-
Resolution: Fixed
-
2.23.0
-
None
Description
As described in the documentation, DynamoDBIO is initiated with a RetryConfiguration through withRetryConfiguration()
PCollection<T> data = ...; data.apply( DynamoDBIO.<WriteRequest>write() .withWriteRequestMapperFn( (SerializableFunction<T, KV<String, WriteRequest>>) //Transforming your T data into KV<String, WriteRequest> t -> KV.of(tableName, writeRequest)) .withRetryConfiguration( DynamoDBIO.RetryConfiguration.create(5, Duration.standardMinutes(1))) .withAwsClientsProvider(new BasicDynamoDbProvider(accessKey, secretKey, region));
It works on beam-sdks-java-io-amazon-web-services (aws sdk version 1), but not on beam-sdks-java-io-amazon-web-services2 (aws sdk version 2).
It is because io.aws2.dynamodb.DynamoDBIO.RetryConfiguration adopted a AutoValue builder design in place of the create method. However, the builder do not have public methods for setting values and building a RetryConfiguration. Moreover, validation was not implemented
@AutoValue public abstract static class RetryConfiguration implements Serializable { /.../ public static Builder builder() { return new AutoValue_DynamoDBIO_RetryConfiguration.Builder(); } @AutoValue.Builder abstract static class Builder { abstract Builder setMaxAttempts(int maxAttempts); abstract Builder setMaxDuration(Duration maxDuration); abstract Builder setRetryPredicate(RetryPredicate retryPredicate); abstract RetryConfiguration build(); }
Attachments
Issue Links
- links to