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

[jira] [Created] (FLINK-10316) Kinesalite bug fix (FLINK-9402) doesn't fully fix the problem.

Joseph Sims created FLINK-10316:
-----------------------------------

             Summary: Kinesalite bug fix (FLINK-9402) doesn't fully fix the problem.
                 Key: FLINK-10316
                 URL: https://issues.apache.org/jira/browse/FLINK-10316
             Project: Flink
          Issue Type: Bug
          Components: Kinesis Connector
    Affects Versions: 1.6.0, 1.5.0, 1.7.0
            Reporter: Joseph Sims


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)