You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Chesnay Schepler (JIRA)" <ji...@apache.org> on 2018/10/17 08:28:00 UTC

[jira] [Updated] (FLINK-10316) Add check to KinesisProducer that aws.region is set

     [ https://issues.apache.org/jira/browse/FLINK-10316?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chesnay Schepler updated FLINK-10316:
-------------------------------------
    Summary: Add check to KinesisProducer that aws.region is set  (was: Kinesalite bug fix (FLINK-9402) doesn't fully fix the problem.)

> Add check to KinesisProducer that aws.region is set
> ---------------------------------------------------
>
>                 Key: FLINK-10316
>                 URL: https://issues.apache.org/jira/browse/FLINK-10316
>             Project: Flink
>          Issue Type: Bug
>          Components: Kinesis Connector
>    Affects Versions: 1.5.0, 1.6.0, 1.7.0
>            Reporter: Joseph Sims
>            Priority: Minor
>              Labels: pull-request-available
>             Fix For: 1.5.5, 1.6.2, 1.7.0
>
>
> Related to: https://issues.apache.org/jira/browse/FLINK-9402
> A fix (Flink-9402) was introduced to force the configurations to have *exactly* one of "aws.region" or "aws.endpoint", but the underlying problem wasn't entirely fixed.
> If "aws.endpoint" is set and "aws.region" is unset, a different exception is thrown, instead.
> In *KinesisConfigUtil.java*, *getValidatedProducerConfiguration()* calls:
> {code:java}
>     validateAwsConfiguration(config)
> {code}
> Where the original fix was introduced ("aws.region" XOR "aws.endpoint")
>  But a couple of lines later, *getValidatedProducerConfiguration()* then calls:
> {code:java}
>     kpc.setRegion(config.getProperty(AWSConfigConstants.AWS_REGION));
> {code}
> Which explicitly checks for the existence of "aws.region", and throws an exception if it is not set.
>  Thus, this class needs to be fixed such that "aws.region" is only required if "aws.endpoint" is unset, as the original ticket indicated.
> Also, *validateAwsConfiguration()* has a minor bug where is labels the "aws.endpoint" incorrectly.
>  Current:
> {code:java}
> if (!(config.containsKey(AWSConfigConstants.AWS_REGION) ^ config.containsKey(ConsumerConfigConstants.AWS_ENDPOINT))) {
>    // per validation in AwsClientBuilder
>    throw new IllegalArgumentException(String.format("Either AWS region ('%s') or AWS endpoint ('%s') must be set in the config.",
>       AWSConfigConstants.AWS_REGION, AWSConfigConstants.AWS_REGION));
> }
> {code}
> But should be:
> {code:java}
> if (!(config.containsKey(AWSConfigConstants.AWS_REGION) ^ config.containsKey(ConsumerConfigConstants.AWS_ENDPOINT))) {
>    // per validation in AwsClientBuilder
>    throw new IllegalArgumentException(String.format("Either AWS region ('%s') or AWS endpoint ('%s') must be set in the config.",
>       AWSConfigConstants.AWS_REGION, ConsumerConfigConstants.AWS_ENDPOINT));
> }
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)