[
https://issues.apache.org/jira/browse/KAFKA-8011?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16779605#comment-16779605
]
ASF GitHub Bot commented on KAFKA-8011:
---------------------------------------
bbejeck commented on pull request #6338: KAFKA-8011: Fix for race condition
causing ConcurrentModificationException
URL: https://github.com/apache/kafka/pull/6338
In the `RegexSourceIntegrationTest#testRegexMatchesTopicsAWhenCreated()` and
`RegexSourceIntegrationTest#testRegexMatchesTopicsAWhenDeleted()` a race
condition exists where the `ConsumerRebalanceListener` in the test modifies the
list of subscribed topics when the condition for the test success is comparing
the same array instance against expected values.
This PR should fix this race condition by using a `CopyOnWriteArrayList`
which guarantees safe traversal of the list even when a concurrent modification
is happening.
Using the `CopyOnWriteArrayList` should not impact performance negatively as
the number of traversals, a result of using `ArrayList.equals()`, far outnumber
(`TestUtils.waitForCondition()` checks for a successful result every`100ms`)
the possible modifications as there will be at most one topic name
added/removed during the test.
For testing, I updated the `RegexSourceIntegrationTest`integration test and
ran the suite of streams tests.
### Committer Checklist (excluded from commit message)
- [ ] Verify design and implementation
- [ ] Verify test coverage and CI build status
- [ ] Verify documentation (including upgrade notes)
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
> Flaky Test RegexSourceIntegrationTest#testRegexMatchesTopicsAWhenCreated
> ------------------------------------------------------------------------
>
> Key: KAFKA-8011
> URL: https://issues.apache.org/jira/browse/KAFKA-8011
> Project: Kafka
> Issue Type: Bug
> Components: streams
> Reporter: Bill Bejeck
> Priority: Critical
> Labels: flaky-test, newbie
>
> The RegexSourceIntegrationTest#testRegexMatchesTopicsAWhenCreated
> and RegexSourceIntegrationTest#testRegexMatchesTopicsAWhenDeleted tests use
> an ArrayList to assert the topics assigned to the Streams application.
> The ConsumerRebalanceListener used in the test operates on this list as does
> the TestUtils.waitForCondition() to verify the expected topic assignments.
> Using the same list in both places can cause a ConcurrentModficationException
> if the rebalance listener modifies the assignment at the same time
> TestUtils.waitForCondition() is using the list to verify the expected topics.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)