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

Fix AwsOptions Jackson (de)serialization of integer values

Details

    • Bug
    • Status: Resolved
    • P2
    • Resolution: Fixed
    • 2.28.0
    • 2.30.0
    • io-java-aws
    • None

    Description

      Minimal test case to reproduce:

      AwsOptions awsOptions = PipelineOptionsTranslation
              .fromProto(PipelineOptionsTranslation.toProto(PipelineOptionsFactory
                      .fromArgs("--clientConfiguration={ \"proxyPort\": -1 }")
                      .create()
              ))
              .as(AwsOptions.class);
      System.out.println(awsOptions.getClientConfiguration());
      

      Stacktrace:

      java.lang.Double cannot be cast to java.lang.Integer
      java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer
      	at org.apache.beam.sdk.io.aws.options.AwsModule$AwsHttpClientConfigurationDeserializer.deserialize(AwsModule.java:303)
      	at org.apache.beam.sdk.io.aws.options.AwsModule$AwsHttpClientConfigurationDeserializer.deserialize(AwsModule.java:290)
      	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4202)
      	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3205)
      	at org.apache.beam.sdk.options.ProxyInvocationHandler.getValueFromJson(ProxyInvocationHandler.java:511)
      	at org.apache.beam.sdk.options.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:170)
      	at com.sun.proxy.$Proxy59.getClientConfiguration(Unknown Source)
      

      Culprit:

      https://github.com/apache/beam/blob/v2.28.0/sdks/java/io/amazon-web-services/src/main/java/org/apache/beam/sdk/io/aws/options/AwsModule.java#L303

      Explanation:

      Jackson messages serialize numeric values as doubles. When options are later deserialized from that format, the value of "proxyPort" is "-1.0" and not "-1", leading to:

      (Integer) Double.valueOf(-1.0)
      

       

      Attachments

        Issue Links

          Activity

            People

              avalanche123 Bulat Shakirzyanov
              avalanche123 Bulat Shakirzyanov
              Votes:
              0 Vote for this issue
              Watchers:
              2 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 - 1h 20m
                  1h 20m