[jira] [Created] (FLINK-16453) A test failure in KafkaTest

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Created] (FLINK-16453) A test failure in KafkaTest

Shang Yuanchun (Jira)
cpugputpu created FLINK-16453:
---------------------------------

             Summary: A test failure in KafkaTest
                 Key: FLINK-16453
                 URL: https://issues.apache.org/jira/browse/FLINK-16453
             Project: Flink
          Issue Type: Bug
          Components: Connectors / Kafka
            Reporter: cpugputpu


The tests in _org.apache.flink.table.descriptors.KafkaTest#testValidation_ may fail. The unexpected behaviour is presented as follows:

testValidation(org.apache.flink.table.descriptors.KafkaTest)
java.lang.AssertionError:
expected:<{connector.property-version=1, connector.startup-mode=specific-offsets,
connector.properties.kafka.stuff=42, connector.properties.zookeeper.stuff=12,
connector.type=kafka, connector.specific-offsets=partition:0,offset:42;partition:1,offset:300,
connector.topic=MyTable, connector.version=0.11}>
but was:<{connector.property-version=1, connector.startup-mode=specific-offsets,
connector.properties.kafka.stuff=42,
connector.properties.zookeeper.stuff=12, connector.type=kafka, connector.specific-offsets=partition:1,
offset:300;partition:0,offset:42, connector.topic=MyTable, connector.version=0.11}>

 

The root cause of this order issue is regarding two HashMap variables initialized:

this.specificOffsets = new HashMap<>(); (flink-connectors/flink-connector-kafka-base/src/main/java/org/apache/flink/table/descriptors/Kafka.java)

final Map<Integer, Long> offsets = new HashMap<>();(flink-connectors/flink-connector-kafka-base/src/test/java/org/apache/flink/table/descriptors/KafkaTest.java)

And the iteration of HashMap is here:

for (Map.Entry<Integer, Long> specificOffset : specificOffsets.entrySet())  (in function _toConnectorProperties_  __ at _Kafka.java_)

The specification about HashMap says that "this class makes no guarantees as to the order of the map; in particular, it does not guarantee that the order will remain constant over time". The documentation is here for your reference: https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html

 

If I change the two HashMap vairables into LinkedHashMap,the failure will be removed, making the test more stable. If you come up with better fix, please be free to discuss with me.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)