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

DynamoDBIO.RetryConfiguration in AWS v2 is not correctly exposed

Details

    • Bug
    • Status: Resolved
    • P2
    • Resolution: Fixed
    • 2.23.0
    • 2.25.0
    • io-java-aws
    • 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

          Activity

            People

              dennisyung Dennis Yung
              dennisyung Dennis Yung
              Votes:
              0 Vote for this issue
              Watchers:
              1 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 - 50m
                  50m